【问题标题】:discrepancy in double to Float class conversion in javajava中double到Float类转换的差异
【发布时间】:2017-03-17 06:35:08
【问题描述】:

我正在尝试下面的代码,但在执行344741.79 后,值显示为344741.78

意思是小数点后.79 被转换为.78,我真的很想知道为什么我在转换后没有得到完全相同的值,是哪个逻辑在做这个?

public static void main(String[] s) {
    double a = 344741.79;
    System.out.print(new Float(a));
}

【问题讨论】:

  • 在 Java 中从 double 转换为 float 时会丢失一些精度。
  • 虽然这里可能会或可能不会出现这种情况,但在从 Java 源代码文字转换为 double(也不能代表所有小数)时,您也会在编译期间失去精度。跨度>
  • 如果您需要精度,您应该使用 BigDecimal 类

标签: java casting floating-point type-conversion


【解决方案1】:

Float 只保证准确存储6 significant decimal digits。对于 344741.79,最近的 2 个Floats 是 344741.78125(打印为344741.78)和 344741.8125(打印为344741.8)。

【讨论】:

  • 感谢您的回答和时间:)
  • 如果您对答案感到满意,请点击勾选接受它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
  • 2018-01-02
相关资源
最近更新 更多