2011-05-29 62 views

回答

16

0.1不能精確浮點表示:

printf("%.16f\n", 0.1f); 

顯示:

0.1000000014901161 

所以n永遠不會完全等於1

正如@sirlak在下面的評論中所說的,它幾乎是從來沒有正確測試浮點變量是否相同。

+3

使用浮點數測試> =或<=。從來沒有爲嚴格的平等測試,正是因爲這個問題。如果您需要測試平等,請測試一個範圍,例如'(n> 0.99)&&(i <1.01)' – sirlark 2011-05-29 13:53:16

+3

@sirlark:「從不測試嚴格的平等」並不總是有效的建議,但它通常是*案例。 – 2011-05-29 13:54:46

+1

出於真正的好奇心,你能給我一個情況,你需要測試嚴格的平等價值(而不是像指針相等的其他方式測試) – sirlark 2011-05-29 13:56:50

相關問題