1

我正在尝试上传一个列包含超过 250 位数字的 excel 字段。当我在 excel 中输入值时,它会自动将其转换为这种格式 1.23456789012345E+256 当我尝试使用 Big Decimal 的 toPlainString 方法读取值时,它会在 15 位后返回全 0。如果我给出没有指数的整个数字,同样的效果也很好。当输入为 1.23456789012345E+256 时,如何获得整数?

BigDecimal bd = new BigDecimal(String.valueOf("1.23456789012345E+256"));
System.out.println( bd.toPlainString());

返回的字符串

*123456789012345*0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来了

4

4 回答 4

4

输入为 1.23456789012345E+256 时如何获取整数

这是作为 BigDecimal 的整个数字。

1.23456789012345E+256 == 12345678901234500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


你为什么使用 BigDecimal?Excel 使用double并且保留它使用的类型会更有意义。

double d = 1.23456789012345E+256;
System.out.println(d);

印刷

1.23456789012345E256
于 2012-07-18T07:37:00.693 回答
1

你不能,精度会丢失。您必须以更高精度的格式存储您的值。

于 2012-07-18T07:37:04.563 回答
0

尝试使用 Double 而不是 double。它还基于您的数据库列数据类型。如果您的数据库允许 1.23456789012345E+256,那么 Double 将帮助您,如果数据库列是 Float。

于 2013-01-29T05:41:51.393 回答
0

通过在数字'1233278238789787前加上单引号,我能够在四舍五入之前获得原始数字

于 2012-07-19T06:57:25.253 回答