我正在开展项目,我必须以下列格式显示价格.
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)
我究竟做错了什么 ?
DecimalFormat和NumberFormat对象期望它们的对象格式化为某种数字,而不是字符串format1,所以IllegalArgumentException抛出它.
您已经format1传输了已经格式化的字符串format而不是数字.传递price到format你已经做了第一次你打电话吧.
但美国语言环境NumberFormat不会给你小数点以外的任何数字; 你会看到2,500印刷的.如果您需要这些2位小数,则可以明确指定该格式,类似于您构造的方式df.
String format2 = new DecimalFormat("#,###.00").format(price);
Run Code Online (Sandbox Code Playgroud)