当前位置: 首页 > 面试题库 >

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

施驰
2023-03-14
问题内容

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


 类似资料:
  • 问题内容: 我正在使用导入以下的CSV文件: CSV文件示例: 问题是,当我稍后在代码中尝试使用这些值时,出现此错误: 错误是因为我要使用的数字不是用点()作为小数点分隔符而是用逗号()书写。手动将逗号更改为点后,我的程序可以工作。 我无法更改输入格式,因此必须替换DataFrame中的逗号才能使代码正常工作,我希望python无需手动执行此操作。你有什么建议吗? 问题答案: 为此有一个参数:do

  • 这行代码使用小数形式2得到两个小数 我的输出是这样的例子 如何将decimalformat设置为这样的输出? Decimalformat中的方法有没有办法做到这一点。有这样的代码 我从未扩展过我对十进制格式的了解,这就是我问的原因。 > 有没有更好的办法?

  • 作为前言,我意识到还有其他关于逗号分隔数字的正则表达式的主题,但当我试图使用这些解决方案时,它们都不起作用。

  • 问题内容: 是否可以从“。”更改小数逗号。(点)到MySQL输出中的其他字符(逗号)?我不想使用像这样的函数,我只想使用我通常使用的所有查询,而无需进行任何修改。我正在寻找(一些变量,语言环境等)设置。我试图搜索手册,但没有成功。 问题答案: 不,你不能。这就是SQL标准,而MySQL遵循它(至少在这一点上)。 问题并不是输出的真正问题(如您所提到的,大多数DBMS中都有各种功能),而是输出。如果

  • 问题内容: 我目前使用以下代码打印双精度代码: 除Java在我想使用点时使用Java语言环境的小数点分隔符(逗号)外,此方法运行良好。是否有捷径可寻? 问题答案: 使用其中的重载可以指定语言环境: 如果您 仅 格式化数字(如此处所示),则使用可能更合适。但是,如果您需要其余的格式化功能,则应该可以正常工作。

  • 我有一个XML结构,我想用XSLT转换它。然而,使其尽可能动态化是很重要的。我相信制作一个feed的副本是可能的,然后只需选择一个特定的部分并对其进行转换。当一个新节点添加到原始XML中时,不需要在XSLT中进行任何更改,就可以将这个新节点包含在XSLT的输出中。 原始XML示例: