使用Java标准的Double to String

use*_*673 6 java core

我有以下代码

  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.

rpy*_*rpy 2

由于您试图处理如此多的精度位(有效的小数位),您需要避免使用Double.

因此,首先您应该检查单元格内容是否确实有那么多小数位。(取决于输入值的方式。)

如果是,那么您需要从 POI 获取字符串表示形式并直接使用它,或者将字符串值提供给以BigDecimal获取数值。

如果您无法安排 POI 以字符串形式返回高精度值,您可能无法成功使用 POI,因为它在double内部使用来表示数值。这样,在读取数据文件时相关信息就已经丢失了。