我有以下代码
double cellValue = 78871234510124568.0;
String cell = new BigDecimal(cellValue).toPlainString();
String b = String.format("%.0f", cellValue);
System.out.println("Double Value using Big Decimal " + cell);
System.out.println("Double Value using String format " + b);
Run Code Online (Sandbox Code Playgroud)
我设置的double值不作为输出返回.
使用大十进制的
双值78871234510124576 使用字符串格式的双值78871234510124576
是否有一种标准的方法将a转换Double为a String而不使用显式类型转换,其值为long数据类型(最大值)而不是double?
我想问这个问题的原因是因为我正在使用Apache POI阅读excel表,其中所有单元格类型在Excel中都是通用的.我getNumericCellValue()用来读取一个总是以十进制格式返回数字的单元格的值.例如,222将返回为22.0.我想删除小数并将其转换为String.
由于您试图处理如此多的精度位(有效的小数位),您需要避免使用Double.
因此,首先您应该检查单元格内容是否确实有那么多小数位。(取决于输入值的方式。)
如果是,那么您需要从 POI 获取字符串表示形式并直接使用它,或者将字符串值提供给以BigDecimal获取数值。
如果您无法安排 POI 以字符串形式返回高精度值,您可能无法成功使用 POI,因为它在double内部使用来表示数值。这样,在读取数据文件时相关信息就已经丢失了。
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |