java - 十进制格式 "Multiple decimal separators in pattern"

标签 java formatting supercsv

我想将小数值格式化为货币值:1234.56d 应该变成“1.234,56”(这种格式在一些欧洲国家使用)。 我使用以下模式来格式化十进制值:

final DecimalFormat df = new DecimalFormat("###.###.###,00");
final String formatted = df.format(1234.56d);
System.out.println(formatted);

事实上我正在使用 SuperCSV的类(class)FmtNumber ,但这并不重要,因为模式语法是相同的:new FmtNumber("###.###.###,00");

我得到的是 IllegalArgumentException 消息“模式中有多个小数点分隔符”。

我知道只能有一个小数分隔符。但就我而言,它应该是符号“,”。而“,”在我的模式中只出现了一次。

我在 Web 和 StackOverflow 上搜索了这条异常消息,但没有找到有用的答案。

我的错误是什么?

最佳答案

来自javadoc在格式字符串中,.始终 小数点分隔符,,始终 分组分隔符。

它在格式化的 String 中的实际表示由格式化程序实例的语言环境给出。

例如

final DecimalFormat decimalFormat = new DecimalFormat("###,###,##0.00", DecimalFormatSymbols.getInstance(Locale.ENGLISH));

如果您查看 javadoc FmtNumber 明确表示“使用 DecimalFormat 类和默认语言环境”- 因此您需要具有正确的默认 Locale 才能正常工作。

关于java - 十进制格式 "Multiple decimal separators in pattern",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953067/

相关文章:

java - java 中的格式化输出,如 ls

java - 使用 Super CSV 自定义 bean 实例化

java - 如何以编程方式检测检查或识别应用程序是否在 Android Go 版本 8.1 设备上运行

java - NoClassDefFound 错误,因为 System.loadLibrary(Core.NATIVE_LIBRARY_NAME)

java - 无法使用设备策略管理器在 Android 7 中重置密码

java - 如何读取Spring数据中的JSON字符串并写入数据库MySql

CSS 为什么要在规则前添加空格?

android - 如何正确显示 MediaPlayer 的位置/持续时间?

java - 在java中合并多个csv文件

java - Supercsv 生成异常