2011-05-29 57 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

相关问题