Java的DecimalFormat将不正确的十进制数解析为整数

时间:2019-11-28 15:51:14

标签: java formatting format decimalformat

收到所有问候。

我需要验证文本是否与数字相对应。项目区域设置为 es_CO 。我现在遇到的问题是,当使用句点作为小数点分隔符的文本被解析为整数时,这应该是一个错误,因为在上述位置,小数点分隔符是逗号。

例如:

  • 语言环境:es_CO
  • 模式:###.###,##
  • 文本:1.48
  • 数字结果:148.0

源代码:

Locale defaultLocale = new Locale("es", "CO");
NumberFormat numberFormat = NumberFormat.getNumberInstance(defaultLocale);
DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
decimalFormat.applyLocalizedPattern("###.###,##");
Number number = decimalFormat.parse("1.48"); // Here I would expect an exception to be generated.

谢谢您能给我的帮助。

1 个答案:

答案 0 :(得分:0)

这似乎是DecimalFormat中的错误。解决该问题的一种方法是使用Scanner

Locale defaultLocale = new Locale("es", "CO");
Scanner scanner = new Scanner("1.48");
scanner.useLocale(defaultLocale);
Number number = scanner.nextDouble();