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

时间:2016-01-12 17:20:48

标签: java

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

250  -> 250.00
2500 -> 2,500.00
260500.33 -> 260,500.33

我虽然遵循这个方法会让这项工作成功,但它不起作用。

    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

我做错了什么?

2 个答案:

答案 0 :(得分:7)

DecimalFormatNumberFormat个对象希望其对象格式化为某种数字,而不是format1之类的字符串,因此会抛出IllegalArgumentException

您已将已格式化的字符串format1传递给format而不是数字。正如您第一次打电话时所做的那样,将price传递给format

但美国语言环境NumberFormat不会给你小数点以外的任何数字;你会看到2,500打印出来。如果你想要那些2位小数,你可以明确指定那种格式,类似于你构造df的方式。

String format2 = new DecimalFormat("#,###.00").format(price);

答案 1 :(得分:2)

这是如何设置两个小数点和逗号分隔。

NumberFormat.getCurrencyInstance().format(price);