我有一系列BigDecimal数字(例如:123456.78
)。我想添加逗号,所以它们看起来像123,456.78
,所以我将它们转换为字符串并使用了这段代码:
private static String insertCommas(String str) {
if(str.length() < 4){
return str;
}
return insertCommas(str.substring(0, str.length() - 3)) +
"," +
str.substring(str.length() - 3, str.length());
}
这样做。问题是,当我运行insertCommas(str)
时,它会打印123,456,.78
。我无法找到一种方法来阻止逗号放在小数点之前。
-
另一件事,它必须适用于大小数字,这就是为什么我使用上面的代码而不是更简单的代码。
我也尝试了DecimalFormat("#,##0.00")
和类似的类型,但是当数字达到某个点时,它们会被零替换,使我失去有关数字的信息。
帮助?
答案 0 :(得分:8)
有一种更简单的方法可以做到这一点。您只需使用SimpleDecimalFormat
private static String insertCommas(BigDecimal number) {
// for your case use this pattern -> #,##0.00
DecimalFormat df = new DecimalFormat("#,##0.00");
return df.format(number);
}
private static String insertCommas(String number) {
return insertCommas(new BigDecimal(number));
}
您可以在此处学习新模式以及更多内容:DecimalFormat API
希望这会有所帮助:)
答案 1 :(得分:0)
查看Java的Formatting Numeric Print Output教程。这将教你如何在打印或转换为字符串时格式化数字。
答案 2 :(得分:0)
如果你坚持让你的功能发挥作用,你可以使用它:
private static String insertCommas(String str) {
if(str.length() < 4){
return str;
}
String[] tokens = str.split("[.]");
return insertCommas(tokens[0].substring(0, tokens[0].length() - 3)) +
"," +
str.substring(tokens[0].length() - 3, tokens[0].length()) +
((tokens.length > 1) ? ("." + tokens[1]) : "");
}
答案 3 :(得分:0)
派对有点晚了,但是如果你将小数转换为字符串,你可以用一个简单的for循环很容易地插入逗号。
for (int i=amount.indexOf('.')-3; i > 0; i -= 3){
String firstPart = amount.substring(0,i);
String lastPart = amount.substring(i);
amount = firstPart + ","+ lastPart;
}
希望有所帮助。