如何以货币格式格式化小数?

2022-08-31 10:06:30

有没有办法按如下方式设置小数的格式:

100   -> "100"  
100.1 -> "100.10"

如果是整数,请省略小数部分。否则,格式为两个小数位。


答案 1

我建议使用java.text包:

double money = 100.1;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String moneyString = formatter.format(money);
System.out.println(moneyString);

这具有特定于区域设置的额外好处。

但是,如果必须,如果它是一整美元,请截断您得到的字符串:

if (moneyString.endsWith(".00")) {
    int centsIndex = moneyString.lastIndexOf(".00");
    if (centsIndex != -1) {
        moneyString = moneyString.substring(1, centsIndex);
    }
}

答案 2
double amount =200.0;
Locale locale = new Locale("en", "US");      
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(locale);
System.out.println(currencyFormatter.format(amount));

double amount =200.0;
System.out.println(NumberFormat.getCurrencyInstance(new Locale("en", "US"))
        .format(amount));

显示货币的最佳方式

输出

$200.00

如果您不想使用 sign,请使用此方法

double amount = 200;
DecimalFormat twoPlaces = new DecimalFormat("0.00");
System.out.println(twoPlaces.format(amount));

200.00

这也可以使用(带千位分隔符)

double amount = 2000000;    
System.out.println(String.format("%,.2f", amount));          

2,000,000.00