DecimalFormat“模式中的多个小数分隔符”

时间:2013-04-11 15:38:12

标签: 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的类FmtNumber,但这没关系,因为模式语法是相同的:new FmtNumber(“###。###。 ###,00" );

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

据我所知,只能有一个小数分隔符。但就我而言,它应该是“,”的标志。并且“,”在我的模式中只出现过一次。

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

我的错误是什么?

2 个答案:

答案 0 :(得分:5)

格式字符串.中的javadoc 始终小数点分隔符,, 始终一个分组分隔符。

格式化String中的实际表示由formatter实例的语言环境给出。

例如

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

如果你看FmtNumber Locale明确说“使用DecimalFormat类和默认语言环境” - 那么你需要有正确的默认{{1}}才能使用它

答案 1 :(得分:0)

您应该使用culture来格式化,而不是自定义字符串。只需使用:

decimalNumber.ToString("C2", CultureInfo.CreateSpecificCulture("fr-FR"));