这是一个例子:
Double d = (1/3);
System.out.println(d);
这将返回 0,而不是 0.33333...。
有人知道吗?
那是因为1
and3
被视为integers
当您没有另外指定时,所以1/3
评估为integer
0
which 然后转换为double
0
. 要修复它,请尝试(1.0/3)
,或者1D/3
明确声明您正在处理双精度值。
如果您有int
要使用浮点除法除法的 s ,则必须将 sint
转换为 a double
:
double d = (double)intValue1 / (double)intValue2
(实际上,我相信只有强制转换intValue2
就足以让intValue1
自动转换为。)double
除非您需要在对象意义上使用这些值,否则请使用double而不是Double 。注意自动装箱概念