【问题标题】:Double value returns 0 [duplicate]双精度值返回 0 [重复]
【发布时间】:2008-12-14 16:45:27
【问题描述】:

这是一个例子:

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

这会返回 0,而不是 0.33333... 应该如此。

有人知道吗?

【问题讨论】:

  • @ΦXocę웃Пepeúpaツ 这不是重复的。这个问题是这个问题的重复。在标记之前查看日期

标签: java division


【解决方案1】:

那是因为 13 在您没有另外指定时被视为 integers,因此 1/3 的计算结果为 integer 0 然后被转换为 double @987654328 @。要解决此问题,请尝试 (1.0/3)1D/3 明确声明您正在处理双精度值。

【讨论】:

    【解决方案2】:

    如果您有 ints 要使用浮点除法进行除法,则必须将 int 转换为 double

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

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

    【讨论】:

      【解决方案3】:

      使用 double 而不是 Double,除非您需要在对象意义上使用这些值。注意Autoboxing 的概念

      【讨论】:

      • OP 在询问 Java 的截断方法以及为什么整数除法会被截断,即使存储在双精度数中;不是关于自动装箱。
      猜你喜欢
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2020-06-10
      相关资源
      最近更新 更多