有没有一种方法可以将小数格式化如下:
100 -> "100"
100.1 -> "100.10"
如果是整数,则省略小数部分。否则格式化为两位小数。
原文由 DD. 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有一种方法可以将小数格式化如下:
100 -> "100"
100.1 -> "100.10"
如果是整数,则省略小数部分。否则格式化为两位小数。
原文由 DD. 发布,翻译遵循 CC BY-SA 4.0 许可协议
我建议使用 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);
}
}
原文由 duffymo 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.2k 阅读
8 回答5.9k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
1 回答2.1k 阅读✓ 已解决
我对此表示怀疑。问题是如果 100 是浮点数,它永远不会是 100,它通常是 99.9999999999 或 100.0000001 或类似的东西。
如果您确实想以这种方式格式化,则必须定义一个 epsilon,即与整数的最大距离,如果差异较小,则使用整数格式,否则使用浮点数。
这样的事情可以解决问题: