1

我正在做一些编码,突然想知道 floor() 的奇怪行为。下面提到了导致错误的那一行:

printf("%f",floor(310.96*100));

输出是31095.0000.

为什么会这样?

4

2 回答 2

1

这是一个典型的浮点问题。常数值310.96不能同样表示为浮点数。相反,最接近的浮点值表示是310.9599914550781.

你可以在这里试一试。将结果乘以100并截断floor()31095.0000

于 2013-09-13T10:54:13.940 回答
0

浮点数不是 100% 精确 310.96*100 可能会导致 31095.99999999 ...因此您的结果,另请参阅

于 2013-09-13T10:44:27.010 回答