Java 将负整数转换为双精度给出错误的结果

Java casting negative Integer to Double gives wrong result

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

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

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

有没有办法去掉小数点,从而在整数部分增加一点范围?或者范围更大的其他数据类型?

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

而不是 double 试试 BigDecimal

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