3 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
我對(duì)此表示懷疑。問(wèn)題是,如果是浮點(diǎn)數(shù),則100永遠(yuǎn)不會(huì)為100,通常為99.9999999999或100.0000001或類似的值。
如果確實(shí)要用這種方式格式化,則必須定義一個(gè)epsilon,即距整數(shù)的最大距離,如果差較小,則使用整數(shù)格式化,否則使用浮點(diǎn)數(shù)。
這樣的事情可以解決問(wèn)題:
public String formatDecimal(float number) {
float epsilon = 0.004f; // 4 tenths of a cent
if (Math.abs(Math.round(number) - number) < epsilon) {
return String.format("%10.0f", number); // sdb
} else {
return String.format("%10.2f", number); // dj_segfault
}
}

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
我建議使用java.text包:
double money = 100.1;
NumberFormat formatter = NumberFormat.getCurrencyInstance();
String moneyString = formatter.format(money);
System.out.println(moneyString);
這具有特定于區(qū)域設(shè)置的額外好處。
但是,如果必須的話,如果它是一整美元,則截?cái)嘁祷氐淖址?/p>
if (moneyString.endsWith(".00")) {
int centsIndex = moneyString.lastIndexOf(".00");
if (centsIndex != -1) {
moneyString = moneyString.substring(1, centsIndex);
}
}

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
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));
顯示貨幣的最佳方法
產(chǎn)量
$ 200.00
如果您不想使用符號(hào),請(qǐng)使用此方法
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
添加回答
舉報(bào)