6

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

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

任何帮助,将不胜感激!

4

2 回答 2

14

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

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

于 2011-09-17T23:55:03.753 回答
6

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

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

于 2011-09-17T23:53:53.810 回答