以下是一个例子:
Double d = (1/3);
System.out.println(d);
这将返回0,而不是0.33333 ......应该。
有人知道吗?
答案 0 :(得分:38)
这是因为1
和3
被视为integers
时未另行指定,因此1/3
评估为integer
{{1}然后将其转换为0
double
。要解决此问题,请尝试0
或(1.0/3)
明确声明您正在处理双值。
答案 1 :(得分:12)
如果您想要使用浮点除法int
进行划分,则必须将int
转换为double
:
double d = (double)intValue1 / (double)intValue2
(实际上,我认为只有施放intValue2
就足以让intValue1
自动投放到double
。)
答案 2 :(得分:1)
使用 double 而不是 Double ,除非您需要在对象意义上使用这些值。请注意Autoboxing概念