9

这是一个例子:

Double d = (1/3);
System.out.println(d);

这将返回 0,而不是 0.33333...。

有人知道吗?

4

3 回答 3

38

那是因为1and3被视为integers当您没有另外指定时,所以1/3评估为integer 0which 然后转换为double 0. 要修复它,请尝试(1.0/3),或者1D/3明确声明您正在处理双精度值。

于 2008-12-14T06:48:11.707 回答
12

如果您有int要使用浮点除法除法的 s ,则必须将 sint转换为 a double

double d = (double)intValue1 / (double)intValue2

(实际上,我相信只有强制转换intValue2就足以让intValue1自动转换为。)double

于 2008-12-14T07:00:27.827 回答
1

除非您需要在对象意义上使用这些值,否则请使用double而不是Double 。注意自动装箱概念

于 2008-12-14T07:05:10.783 回答