Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在做一些编码,突然想知道 floor() 的奇怪行为。下面提到了导致错误的那一行:
printf("%f",floor(310.96*100));
输出是31095.0000.
31095.0000
为什么会这样?
这是一个典型的浮点问题。常数值310.96不能同样表示为浮点数。相反,最接近的浮点值表示是310.9599914550781.
310.96
310.9599914550781
你可以在这里试一试。将结果乘以100并截断floor()31095.0000
100
floor()
浮点数不是 100% 精确 310.96*100 可能会导致 31095.99999999 ...因此您的结果,另请参阅