Java货币编号格式

有没有一种格式可以如下设置小数:


100   -> "100"  

100.1 -> "100.10"

如果是整数,则省略小数部分。否则,格式要保留两位小数。


眼眸繁星
浏览 356回答 3
3回答

手掌心

我对此表示怀疑。问题是,如果是浮点数,则100永远不会为100,通常为99.9999999999或100.0000001或类似的值。如果确实要用这种方式格式化,则必须定义一个epsilon,即距整数的最大距离,如果差较小,则使用整数格式化,否则使用浮点数。这样的事情可以解决问题:public String formatDecimal(float number) {&nbsp; float epsilon = 0.004f; // 4 tenths of a cent&nbsp; if (Math.abs(Math.round(number) - number) < epsilon) {&nbsp; &nbsp; &nbsp;return String.format("%10.0f", number); // sdb&nbsp; } else {&nbsp; &nbsp; &nbsp;return String.format("%10.2f", number); // dj_segfault&nbsp; }}

九州编程

我建议使用java.text包:double money = 100.1;NumberFormat formatter = NumberFormat.getCurrencyInstance();String moneyString = formatter.format(money);System.out.println(moneyString);这具有特定于区域设置的额外好处。但是,如果必须的话,如果它是一整美元,则截断要返回的字符串:if (moneyString.endsWith(".00")) {&nbsp; &nbsp; int centsIndex = moneyString.lastIndexOf(".00");&nbsp; &nbsp; if (centsIndex != -1) {&nbsp; &nbsp; &nbsp; &nbsp; moneyString = moneyString.substring(1, centsIndex);&nbsp; &nbsp; }}

神不在的星期二

double amount =200.0;Locale locale = new Locale("en", "US");&nbsp; &nbsp; &nbsp;&nbsp;NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(locale);System.out.println(currencyFormatter.format(amount));要么double amount =200.0;System.out.println(NumberFormat.getCurrencyInstance(new Locale("en", "US"))&nbsp; &nbsp; &nbsp; &nbsp; .format(amount));显示货币的最佳方法产量$ 200.00如果您不想使用符号,请使用此方法double amount = 200;DecimalFormat twoPlaces = new DecimalFormat("0.00");System.out.println(twoPlaces.format(amount));200.00也可以使用(带千位分隔符)double amount = 2000000;&nbsp; &nbsp;&nbsp;System.out.println(String.format("%,.2f", amount));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;2,000,000.00
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java