【问题标题】:Java casting negative Integer to Double gives wrong resultJava将负整数转换为Double会产生错误的结果
【发布时间】:2015-01-15 02:42:24
【问题描述】:

我正在尝试将 Integer 转换为 Double 但 Java 给了我错误的结果,我相信是由于溢出。

Integer ii = -123456789;
Double dd = ii.DoubleValue();
System.out.println(dd);

我希望收到 -123456789.0,但我收到的是 -1.23456789E8。

有没有办法去掉小数以在整数部分获得一点范围?还是范围更大的其他数据类型?

PS。我从另一种语言转换代码,允许使用相同数量的可变字节。

【问题讨论】:

  • 定义错误。这些数字有什么区别?
  • 嗯,视觉上。我希望小数点打印在正确的位置。我不能在发票上这样打印。
  • 您实际上是在投射到float,这不是一个好主意。
  • 这些数字是representing currency吗?
  • 我希望你没有使用浮动类型来存储货币金额......

标签: java types integer double overflow


【解决方案1】:

BigDecimal代替double

Integer ii = -123456789;
BigDecimal dd = new BigDecimal(ii);
System.out.println(dd);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 2018-05-26
    • 2016-04-21
    • 2015-10-31
    相关资源
    最近更新 更多