Java 如何将字符串值格式化为双十进制格式
这里我得到了Java 如何将字符串值格式化为双十进制格式,java,Java,这里我得到了NumberFormatException: Number Format nf = NumberFormat.getNumberInstance(Locale.US); DecimalFormat df = (DecimalFormat)nf; df.applyPattern("$###,###.###"); String format_val=df.format(4596.37); num = new jxl.write.Number(i, j,Double.parseDoubl
NumberFormatException
:
Number Format nf = NumberFormat.getNumberInstance(Locale.US);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern("$###,###.###");
String format_val=df.format(4596.37);
num = new jxl.write.Number(i, j,Double.parseDouble(format_val),arial10format);
如何解决这个问题?您也可以使用创建字符串时使用的DecimalFormat实例,通过使用
parse()
方法对其进行解析
有关更多详细信息,请参阅javaDoc
我“认为”您想要的(我没有尝试过)是让单元格处理格式,例如
java.lang.NumberFormatException: For input string: "$4,596.37"
请查看以了解更多详细信息
你想做的是
double
值4596.37
转换为字符串
,格式为$#####.####
$4596.37
转换回double
…由于传递给的字符串不符合double
的要求,因此失败
数字没有格式的概念,这就是格式化程序的用途。但是,在这种情况下,Excel单元格有自己的内部格式化功能,可以为您解决这一问题。
<4928.25
对于Double.parseDouble
来说不是有效的格式。在这种情况下,我想知道为什么您要格式化4596.37
的值,而不仅仅是将其写入jxl.write.Number
4596.37是一个双精度值,我想用逗号分隔的$symbol来表示该值@MadProgrammer@RvN但这不是一个有效的数字!首先,4596.37
不是一个字符串
值,它是一个double
,其次,如果要使用该格式,为什么要使用double.parseDouble(format\u val)
尝试将($4928.25
)解析回double
?数字没有格式的概念您应该让单元格处理格式
NumberFormat decimalNo = new NumberFormat("$###,###.###");
WritableCellFormat numberFormat = new WritableCellFormat(decimalNo);
//write to datasheet
Number numberCell = new Number(i, j, 4596.37, numberFormat);
excelSheet.addCell(numberCell);