int a =(int)((0.7 + 0.1)* 10)。为什么a = 7?

时间:2013-06-29 19:29:38

标签: java

我对每个人都有疑问。

int a = (int) ((0.7 + 0.1) * 10)

执行此代码后,a = 7。 我不明白为什么,因为(0.7 + 0.1)= 0.8和0.8 * 10 = 8。 谁能告诉我为什么? 谢谢!

3 个答案:

答案 0 :(得分:25)

问题是0.1和0.7都不能完全表示为double

  • 0.1表示为大约0.10000000000000000555

  • 0.7表示为大约0.69999999999999995559

他们的总和约为0.79999999999999993339。乘以10并截断,得到7

What Every Computer Scientist Should Know About Floating-Point Arithmetic是关于这个主题的精彩读物。

答案 1 :(得分:6)

它是浮点运算,它会被抛弃。

这里发生的是(0.1 + 0.7)真的接近0.8但是实际上 0.8,当你乘以10得到7.9999 ...当你落地时,你得到7。

答案 2 :(得分:3)

Java中int的小数部分被截断。您可以创建xy浮点变量,也可以将它们转换为浮点数并将它们强制转换为最终结果。