这里有一个例子:
Double d = (1/3);
System.out.println(d);
这返回了0,而不是应该返回的0.33333...
有人知道吗?
这是因为当您没有明确指定时,1
和 3
被视为整数(integers
),所以 1/3
求值为整数(integer
) 0
,然后转换为双精度(double
) 0
。要解决这个问题,请尝试使用 (1.0/3)
或者 1D/3
来显式地说明您正在处理双精度值。
如果您有要使用浮点数除法进行除法运算的 int
,则必须将 int
转换为 double
:
double d = (double)intValue1 / (double)intValue2
intValue2
转换为类型int
,就足以使intValue1
自动转换为类型double
。我相信这样就可以了。)除非需要在对象范畴内使用这些值,否则请使用 double 而非 Double。要注意 自动装箱 的概念。