如何使用java.util.Formatter将双精度格式转换为千分位和2位小数
我想将一个双精度值格式化为如何使用java.util.Formatter将双精度格式转换为千分位和2位小数,java,Java,我想将一个双精度值格式化为 货币格式符号 四舍五入到小数点后2位的值 带千位分隔符的最终值 专门使用java.util.Formatter类 示例:- double amount = 5896324555.59235328; String finalAmount = ""; // Some coding System.out.println("Amount is - " + finalAmount); 应该是: 金额为-5896324555.60美元 我搜索了一下,但我不能很好地理解Oracl
double amount = 5896324555.59235328;
String finalAmount = "";
// Some coding
System.out.println("Amount is - " + finalAmount);
应该是:
金额为-5896324555.60美元
我搜索了一下,但我不能很好地理解Oracle文档或其他教程,我发现这个链接非常接近我的要求,但不是Java-
我强烈建议使用内置货币格式化程序,而不是使用
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
美分(或更多) 如果需要使用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);
在页面的示例代码上展开。您显然没有搜索到足够的。。。有很多关于格式化程序类的问题。另请参见关于千位分隔符的内容……不要将double用作货币。使用BigDecimal@杰瑞·安德鲁斯:有什么特别的原因吗?当然,大十进制总是给你无限的精度。浮点和双精度运算将引入舍入误差。典型的例子总是四舍五入。考虑这篇文章(谷歌搜索Java java第三进制结果的结果):这个方法工作了,虽然它不是格式化程序类。非常感谢。这是我真正期望的。非常感谢。没关系。而且,如果您想从特定的美元符号中提取代码,应该使用
Currency.getInstance(locale).getSymbol(locale)
。