我正在使用 Poi 在 Java 中创建 Excel 工作簿。我的原始数据以字符串形式出现。我需要格式化数据以在写入数字的单元格中输入两位小数。我用Double.parseDouble()将字符串转换为数字,然后使用十进制格式将数字格式化为字符串。另一个电话Double.parseDouble()将值返回为数字(它所在的单元格是数字格式的,所以我不能使用字符串值),我应该很好。问题是,第二次调用Double.parseDouble()截断小数点右侧的所有尾随零。有人知道如何强制将此值读为 1.50 而不是 1.5 吗?
I always want two decimals.
解决方案:始终应用特定的十进制格式模式。
示例代码片段:
//java.text.DecimalFormat df = new java.text.DecimalFormat( "###0.00" );
java.text.DecimalFormat df = new java.text.DecimalFormat();
df.applyPattern( "###0.00" ); // always two decimals
double dbl = 1.50d ;
// prints: dbl = 1.5
System.out.println( "dbl = " + dbl );
// prints: df.format( 1.5 ) = 1.50
System.out.println ( "df.format( " + dbl + " ) = " + df.format( dbl ) );
UPDATE:
好的,从您的帖子中,我了解到您试图填充数字格式的单元格,只是为了打印或显示两位小数。您知道默认情况下所有数字字段都会被解释为省略尾随零。为了达到您的要求,您可能需要使用CellFormat http://poi.apache.org/apidocs/org/apache/poi/ss/format/CellFormat.html and/or DataFormatter http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/DataFormatter.html根据你的语境Cell http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Cell.html对象,但当说Format
, 它是一个String
再次。
我没有尝试以下代码,但可能会对您有所帮助。
DataFormatter dataFormatter = new DataFormatter();
dataFormatter.setDefaultNumberFormat( instanceOfDesiredDecimalFormat );
// or
// dataFormatter.setExcelStyleRoundingMode( instanceOfDesiredDecimalFormat );
// apply this format on the cell you want
dataFormatter.formatCellValue( instanceOfNumericCellInContext );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)