Java是否自相矛盾?

Han*_*h P 6 java math fractions

我应该Math.round(1/2)在Java中声明为int还是double?如果两者都很好,哪个更正确?

另外,为什么Eclipse告诉我Math.round(1/2)= 0.0,而Math.round(0.5)= 1.0?

任何帮助,将不胜感激!

小智 14

编译器首先计算表达式1/2.这两个数字都是整数,所以它做整数数学.在整数中,1除以2是0.然后,它将0转换为double,以便将其传递给Math.round().

如果你想要一个正确的答案,你需要传递双打:你可以通过使用1.0/2.0而不是1/2来做到这一点.


Ker*_* SB 6

1/2 是0,因为它是一个整数表达式.

如果你想要浮点值,说1.0/2.0(或只是1./2).