type cast C ++以奇怪的方式运行

时间:2014-02-19 08:45:06

标签: c++ types casting

这可能是一个愚蠢的问题,但我遇到了一个奇怪的问题。

我发现这行代码

cout << long((15.25-14.74)*100) << endl 

将输出50.而这一行

cout << long(0.51*100) << endl

将输出51。

我的问题是为什么它们不同,为什么第一个输出50而不是51?

1 个答案:

答案 0 :(得分:4)

在浮点算术中,实数有时可能不是你所期望的,因为精度是有限的。在您的情况下,0.51实际上是0.50999999