java - 如何将 DecimalFormat 的小数点分隔符从逗号更改为点/点?

标签 java android bigdecimal decimal-point decimalformat

我有一个疯狂的小方法,可以将 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/

相关文章:

android RelativeLayout以编程方式更改高度

java - 如何在 BigDecimal (Java) 中存储无穷大?

java - 如何在不同的方法中放置一个条件来比较决定是否执行任务的元素?

java - 与 GridBagLayout 右对齐

android - Mongoose 时间戳和纪元转换为 Date() 的问题

android - 无法在 android.R.layout.simple_list_item_checked 中选择项目

java - 如何在Java中设置BigDecimal的特定精度?

java - BigDecimal 和 BigInteger 的限制是什么?

java - 添加到 TreeSet 时记录位置

java - 使用if语句决定是否在jsp页面上显示表格