Java强制转换为Integer to Double会产生错误的结果

时间:2015-01-15 02:42:24

标签: java types integer double overflow

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

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

我期待收到-123456789.0,但我得到-1.23456789E8。

有没有办法摆脱小数位数以获得整数部分的小范围?或者是另一种范围更大的数据类型?

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

1 个答案:

答案 0 :(得分:2)

而不是double尝试使用BigDecimal

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