如何在 Java 中正确显示最多两位小数(美分)(包括尾随零)的价格?

2024-01-02

Java中有一个关于小数四舍五入的好问题here https://stackoverflow.com/questions/153724/how-to-round-a-number-to-n-decimal-places-in-java。但我想知道如何在程序中包含尾随零来显示价格,例如:$1.50、$1.00

简单的解决方案是

String.format("%.2g%n", 0.912385);

工作得很好,但如果它位于小数点最后一位,则省略尾随零。即使我只使用这样的表达式,问题也会出现在我的程序中:

double price = 1.50;

当我用不同的价格进行计算(加法、乘法等)时,结果主要显示如下:

$2.5000000000000003

因此,使用 String.format 可以很好地达到此目的,但它会将上面的示例截断为

$2.5

有没有正确的方法来显示小数点后第二位的尾随零?或者如果计算的输出应该是两个零

$2.00

我建议您这样做:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
double price = 2.50000000000003;
System.out.println(currencyFormatter.format(price));

这也具有特定于区域设置的优点。例如,如果您位于欧元区而不是美国,这将起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Java 中正确显示最多两位小数(美分)(包括尾随零)的价格? 的相关文章

随机推荐