DecimalFormat.applyPattern(“#。## 0,00”)抛出异常

时间:2017-02-24 21:26:54

标签: java decimalformat

代码:

DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(locale);
df.applyPattern("#.##0,00");

它会抛出IllegalArgumentException并显示格式错误的消息“#。## 0,00”

这有什么问题?

编辑:我想使用。作为千位分隔符,作为小数。我知道这是屁股倒退,但有一个案例,那就是他们想要的格式。

2 个答案:

答案 0 :(得分:4)

您需要使用“#,## 0。##”模式来指示您想要小数点分隔符和千位分隔符的位置。您使用此Locale时使用的 DecimalFormat 将确定小数点分隔符是.还是, - 模式不应该是改变。

如果您没有获得正确的分隔符,则需要使用其他Locale

答案 1 :(得分:1)

您不必使用不同的 DecimalFormatSymbols

您可以使用 DecimalFormatSymbols 类来更改出现在由 format 方法生成的格式化数字中的符号。这些符号包括小数点分隔符、分组分隔符、减号和百分号等。

下一个示例通过对数字应用奇怪的格式来演示 setDecimalSeparator 类。异常格式是调用 setGroupingSeparatorsetGroupingSizeDecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(currentLocale); unusualSymbols.setDecimalSeparator('|'); unusualSymbols.setGroupingSeparator('^'); String strange = "#,##0.###"; DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols); weirdFormatter.setGroupingSize(4); String bizarre = weirdFormatter.format(12345.678); System.out.println(bizarre); 方法的结果。

1^2345|678

运行时,此示例以奇怪的格式打印数字:

=HYPERLINK("https://worldinternal.com:8235/clinetpage.html?testid=" &REGEXEXTRACT(A1,"FA-TI\d+"),REGEXEXTRACT(A1,"FA-TI\d+"))

取自:https://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html