我有一個簡單的示例應用程序,我在這裏乘以並加上double
變量,然後將它們與預期結果進行比較。在這兩種情況下,結果都等於預期的結果,但當我做比較失敗時。我應該如何比較這些雙打以獲得理想的結果?
static void Main(string[] args)
{
double a = 98.1;
double b = 107.7;
double c = 92.5;
double d = 96.5;
double expectedResult = 88.5;
double result1 = (1*2*a) + (-1*1*b);
double result2 = (1*2*c) + (-1*1*d);
Console.WriteLine(String.Format("2x{0} - {1} = {2}\nEqual to 88.5? {3}\n", a, b, result1, expectedResult == result1));
Console.WriteLine(String.Format("2x{0} - {1} = {2}\nEqual to 88.5? {3}\n", c, d, result2, expectedResult == result2));
Console.Read();
}
這裏是輸出:
2x98.1 - 107.7 = 88.5
Equal to 88.5? False
2x92.5 - 96.5 = 88.5
Equal to 88.5? True
我需要能夠捕捉到它其實True
在這兩種情況下。我會怎麼做?
+1真,但我可以問你你從哪裏拿這個公式而來? Silverlight控件工具包?還是有一些真正的數學背後的巫術?因爲... http:// stackoverflow。COM /問題/ 2411392 /雙ε-己的平等,大於,低於低於或相等到GRE – xanatos
@xanatos:好問題。這是從我的一個幫手圖書館,我幾年沒有改變。我很確定我從網上獲得了它。我試圖追蹤消息來源。 –
@xanatos:關於常量'DoubleEpsilon',請參閱http://en.wikipedia.org/wiki/Machine_epsilon。仍然不確定其餘的。 –