如何将字符串值格式化为双十进制格式

时间:2014-06-27 06:04:56

标签: java

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);

我来NumberFormatException

java.lang.NumberFormatException: For input string: "$4,596.37"

如何解决这个?

2 个答案:

答案 0 :(得分:0)

你可以使用你用来创建字符串的相同DecimalFormat实例来使用parse()方法解析它

有关详细信息,请参阅javaDoc

http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html#parse(java.lang.String,%20java.text.ParsePosition)

答案 1 :(得分:0)

我"思考"你想要(我没试过这个)是让细胞处理格式化,例如...

NumberFormat decimalNo = new NumberFormat("$###,###.###"); 
WritableCellFormat numberFormat = new WritableCellFormat(decimalNo);
//write to datasheet
Number numberCell = new Number(i, j, 4596.37, numberFormat); 
excelSheet.addCell(numberCell);

请查看WritableCellFormat了解详情

您尝试做的是......

  1. double4596.37转换为String,格式为$###,###.###
  2. 尝试将$4,596.37转换回double ...因为您传递的String不符合{{1}的要求而失败} ...
  3. 一个数字没有格式概念,这是格式化程序的用途。但是,在这种情况下,Excel单元格拥有自己的内部格式化功能,可以为您处理此问题