【发布时间】:2008-12-14 16:45:27
【问题描述】:
这是一个例子:
Double d = (1/3);
System.out.println(d);
这会返回 0,而不是 0.33333... 应该如此。
有人知道吗?
【问题讨论】:
-
@ΦXocę웃Пepeúpaツ 这不是重复的。这个问题是这个问题的重复。在标记之前查看日期
这是一个例子:
Double d = (1/3);
System.out.println(d);
这会返回 0,而不是 0.33333... 应该如此。
有人知道吗?
【问题讨论】:
那是因为 1 和 3 在您没有另外指定时被视为 integers,因此 1/3 的计算结果为 integer 0 然后被转换为 double @987654328 @。要解决此问题,请尝试 (1.0/3) 或 1D/3 明确声明您正在处理双精度值。
【讨论】:
如果您有 ints 要使用浮点除法进行除法,则必须将 int 转换为 double:
double d = (double)intValue1 / (double)intValue2
(实际上,我相信,仅转换 intValue2 就足以让 intValue1 自动转换为 double。)
【讨论】:
使用 double 而不是 Double,除非您需要在对象意义上使用这些值。注意Autoboxing 的概念
【讨论】: