Java 多头转换为货币

我在将多头(美分)转换为货币格式时遇到问题。

我的代码:

long doublePayment = 1099;  //Should equal $10.99
DecimalFormat dFormat = new DecimalFormat();
String formattedString = dFormat.format(doublePayment);
System.out.println(formattedString);

输出: 1,099

我还尝试了:

long doublePayment = 1099;
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US); 
String s = n.format(doublePayment);
System.out.println(s);

由于这是美分,因此输出应为10.99或10.99美元。

无法弄清楚我做错了什么。谢谢!!!


答案 1

如果你需要很长时间才能开始,你仍然应该使用java.math.BigDecimal。

    long doublePayment = 1099;
    BigDecimal payment = new BigDecimal(doublePayment).movePointLeft(2);
    System.out.println("$" + payment); // produces: $10.99

让我们再次大声说:永远不应该使用浮点变量来存储货币/货币价值。


答案 2

要将美分转换为美元,您可以使用

long doublePayment = 1099;
NumberFormat n = NumberFormat.getCurrencyInstance(Locale.US); 
String s = n.format(doublePayment / 100.0);
System.out.println(s);

这将精确到70万亿美元。