将处理后的浮点值类型化为int会降低实际值

时间:2014-08-18 04:59:48

标签: c++ casting floating-point

在C ++中, floor(9099.96 * 100.0)给出的答案为 909995 。我期待909996。

我无法在这里想到解释。任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:3)

这是正确的结果:根据IEEE754 calculator9099.96的值在9099.9599609375中表示为double。乘以100后,您获得909995.99609375。通过floor为您提供909995

答案 1 :(得分:0)

尝试ceil。它将始终围绕下一个最大数字,在这种情况下将给你909996.你可能还想看看圆函数。