繁体   English   中英

如何使用java.util.Formatter将双精度格式格式化为千位分隔和两位小数

[英]How to format a double into thousand separated and 2 decimals using java.util.Formatter

我想将double值格式化为具有

  1. 货币格式符号
  2. 值四舍五入到小数点后两位
  3. 带千位分隔符的最终值

专门使用java.util.Formatter类

例子:-

double amount = 5896324555.59235328;
String finalAmount = "";
// Some coding
System.out.println("Amount is - " + finalAmount);

应为:- Amount is - $ 5,896,324,555.60

我进行了搜索,但是我不太了解Oracle文档或其他教程,因此我发现此链接非常接近我的要求,但不是在Java中- 如何将双精度值格式化为点和后的小数点后两位小数的字符串有数千个分隔符?

如果您需要使用java.util.Formatter ,那么它将起作用:

double amount = 5896324555.59235328;
StringBuilder sb = new StringBuilder();
Formatter formatter = new Formatter(sb, Locale.US);
formatter.format("$ %(,.2f", amount);
System.out.println("Amount is - " + sb);

Formatter页面上的示例代码上进行了扩展。

我强烈建议不要使用java.text.NumberFormat ,它带有内置的货币格式化程序,而不是使用java.util.Formatter

double amount = 5896324555.59235328;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String finalAmount = formatter.format(amount);
System.out.println("Amount is - " + finalAmount); 
// prints: Amount is - $5,896,324,555.59

您可以使用printf和类似的格式规范

double amount = 5896324555.59235328;
System.out.printf("Amount is - $%,.2f", amount);

输出是

Amount is - $5,896,324,555.59

要凑整到60美分,您需要59.5美分(或更多)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM