Java自相矛盾吗?

Java自相矛盾吗?,java,math,fractions,Java,Math,Fractions,我应该在Java中将Math.round(1/2)声明为int还是double?如果两者都可以,哪个更正确 还有,为什么Eclipse告诉我Math.round(1/2)=0.0,而Math.round(0.5)=1.0 任何帮助都将不胜感激 1/2为0,因为它是一个整数表达式 如果需要浮点值,可以说1.0/2.0(或者只1/2)。编译器首先计算表达式1/2。这两个数字都是整数,所以它进行整数运算。在整数中,1除以2等于0。然后,它将0强制转换为双精度,以便将其传递给Math.round() 如

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

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


任何帮助都将不胜感激

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


如果需要浮点值,可以说
1.0/2.0
(或者只
1/2
)。

编译器首先计算表达式1/2。这两个数字都是整数,所以它进行整数运算。在整数中,1除以2等于0。然后,它将0强制转换为双精度,以便将其传递给Math.round()


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

。谢谢你的回答。如果我必须声明Math.round(1/2)等于一个变量,那么使用int或double是否重要?哪个更正确?@Hannah P,不管使用哪种变量类型,它都不正确。顺便说一句,您可以使用
1.0/2
1d/2