Java 双精度值返回0
下面是一个例子:Java 双精度值返回0,java,division,Java,Division,下面是一个例子: Double d = (1/3); System.out.println(d); 这将返回0,而不是0.33333。。。应该如此 有人知道吗?这是因为当您不另行指定时,1和3被视为整数,因此1/3计算为整数0,然后转换为双精度0。要修复此问题,请尝试(1.0/3),或者1D/3明确声明您正在处理双值。如果您有int要使用浮点除法进行除法,则必须将int转换为双精度: double d = (double)intValue1 / (double)intValue2 (事实上,
Double d = (1/3);
System.out.println(d);
这将返回0,而不是0.33333。。。应该如此
有人知道吗?这是因为当您不另行指定时,
1
和3
被视为整数,因此1/3
计算为整数0
,然后转换为双精度0
。要修复此问题,请尝试(1.0/3)
,或者1D/3
明确声明您正在处理双值。如果您有int
要使用浮点除法进行除法,则必须将int
转换为双精度
:
double d = (double)intValue1 / (double)intValue2
(事实上,我相信,只有强制转换intValue2
就足以让intValue1
自动转换为double
。使用double而不是double,除非您需要在对象意义上使用这些值。注意概念OP询问Java的截断方法,以及为什么整数的除法会被截断,即使它存储在一个double中;不是关于自动装箱。@ΦXocę웃Пepeúpaツ 它不是复制品。那个问题是这个问题的重复。在你打旗子之前先看一下日期