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