我有一个疯狂的方法,可以将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
我确实需要分隔符是点或点而不是逗号。有人知道如何完成这个小壮举吗?
我已阅读本,尤其是这种死亡,但现在我无法找到一个方法来完成这件事。我是否以错误的方式处理?有更优雅的方法吗?甚至可能是一个解决方案,说明了不同的本地号码表示形式,因为按照欧洲标准,逗号将是完美的。
你可以通过设置区域设置或使用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);
可以从Locale.getDefault()获得currentLocale,即:
Locale currentLocale = Locale.getDefault();