将double值格式化为2个小数点,并在Java中获取逗号分隔的货币格式

Cha*_*han 1 java

我正在开展项目,我必须以下列格式显示价格.

250  -> 250.00
2500 -> 2,500.00
260500.33 -> 260,500.33
Run Code Online (Sandbox Code Playgroud)

我虽然遵循方法将使这项工作,但它不起作用.

    double price = 2500;
    DecimalFormat df = new DecimalFormat("#.00");

    String format1 = df.format(price);
    System.out.println(format1); //250.00

    String format2 = NumberFormat.getNumberInstance(Locale.US).format(format1);// Exception "Cannot format given Object as a Number"
    System.out.println(format2); //excepted 2,500.00
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?

rge*_*man 7

DecimalFormatNumberFormat对象期望它们的对象格式化为某种数字,而不是字符串format1,所以IllegalArgumentException抛出它.

您已经format1传输了已经格式化的字符串format而不是数字.传递priceformat你已经做了第一次你打电话吧.

但美国语言环境NumberFormat不会给你小数点以外的任何数字; 你会看到2,500印刷的.如果您需要这些2位小数,则可以明确指定该格式,类似于您构造的方式df.

String format2 = new DecimalFormat("#,###.00").format(price);
Run Code Online (Sandbox Code Playgroud)