我正在开展项目,我必须以下列格式显示价格。
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
我做错了什么?
答案 0 :(得分:7)
DecimalFormat
和NumberFormat
个对象希望其对象格式化为某种数字,而不是format1
之类的字符串,因此会抛出IllegalArgumentException
。
您已将已格式化的字符串format1
传递给format
而不是数字。正如您第一次打电话时所做的那样,将price
传递给format
。
但美国语言环境NumberFormat
不会给你小数点以外的任何数字;你会看到2,500
打印出来。如果你想要那些2位小数,你可以明确指定那种格式,类似于你构造df
的方式。
String format2 = new DecimalFormat("#,###.00").format(price);
答案 1 :(得分:2)
这是如何设置两个小数点和逗号分隔。
NumberFormat.getCurrencyInstance().format(price);