Java是否自相矛盾?

时间:2011-09-17 23:52:06

标签: java math fractions

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

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

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:6)

1/2为0,因为它是整数表达式。

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