我的應用程序需要執行一些操作:>,<,==,!=,+, - ,++等(但沒有除法)。這些數字有時是整數,而更少有浮點數。什麼時候雙打開始失去精確度?
如果我在內部使用「double」類型(由IEEE 754定義),即使對於整數,直到我可以安全地使用它們,就好像它們是int
s一樣,沒有運行奇怪的舍入錯誤例如,n == 5 & & n == 6都是真的,因爲他們四捨五入到相同的數字)?
很顯然,各種操作(+, - 等)的第二個輸入始終是一個整數,我知道在0.000 [...] 01之後我會從開始就遇到麻煩。
作爲獎勵答案,同樣的問題,但爲float
。
請選擇「c#」或「C++」,因爲「double」在這些語言之間執行的並不相同。 – Yuck 2012-02-13 16:32:28
在我脫落之前,我可以走多遠到懸崖邊緣?當你可以簡單地把它們看作整數時,你爲什麼會冒任何整數的精度損失?什麼是想要使用雙重的理由? – 2012-02-13 16:33:12
我不認爲有可能構建一個例子,在任何情況下'n == 5 && n == 6'都會評估爲「true」。 – dasblinkenlight 2012-02-13 16:33:17