我有一个疯狂的小方法,可以将 BigDecimal 值转换为漂亮且可读的字符串。
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
然而,它也产生了一个所谓的分组分隔符 ","
使我所有的值都像这样出来:
xxx,xxx
我确实需要分隔符是点或点,而不是逗号。 有人知道如何完成这个小壮举吗?
我已阅读 this尤其是 this现在要死了,但我找不到完成这项工作的方法。 我是以错误的方式接近这个吗?有没有更优雅的方式来做到这一点?甚至可能是考虑不同本地数字表示的解决方案,因为按照欧洲标准,逗号是完美的。
最佳答案
您可以通过设置区域设置或使用 DecimalFormatSymbols 来更改分隔符。 .
如果您希望分组分隔符是一个点,您可以使用欧洲语言环境:
NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;
或者,您可以使用 DecimalFormatSymbols 类来更改出现在由 format 方法生成的格式化数字中的符号。这些符号包括小数分隔符、分组分隔符、减号和百分号等:
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);
currentLocale 可以从 Locale.getDefault() 获得,即:
Locale currentLocale = Locale.getDefault();
关于java - 如何将 DecimalFormat 的小数点分隔符从逗号更改为点/点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5054132/