java - Bigdecimal 转字符串

标签 java tostring bigdecimal

我正在尝试上传一个列包含超过 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*000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000

最佳答案

How do I get the entire number when the input is 1.23456789012345E+256

这是作为 BigDecimal 的整个数字。

1.23456789012345E+256 == 1234567890123450000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000


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

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

打印

1.23456789012345E256

关于java - Bigdecimal 转字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11536403/

相关文章:

java - Web 应用程序中的 RandomStringUtils.random 奇怪行为

java - 强制 BigDecimals 使用科学计数法

android - 显示正规数而不是指数形式

java - Jaxb:如何生成 ObjectFactory 类?

java - 根据当前位置Android从最近到最远对Java中的列表进行排序

c# double 到字符数组或替代

Java:使用 toString().equals() 与 equals()

java - 是否可以在 Java 中构建这样的自定义 GUI?

java - 数据绑定(bind)到未知类型的容器

java - 为什么某些 double 在打印到控制台时会自动舍入?