floor()表现得很奇怪VC ++

时间:2013-09-13 10:41:32

标签: visual-c++

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

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

,输出为31095.0000

为什么会这样?

2 个答案:

答案 0 :(得分:1)

这是典型的floating point issue。常量值310.96不能作为浮点数表示。相反,最接近的浮点值表示为310.9599914550781

你可以尝试自己here。将100乘以floor()并将其截断后会产生31095.0000

答案 1 :(得分:0)

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