首页 > 解决方案 > DecimalFormat 如何更严格?

问题描述

SO上有一些相关的问题,但我认为这个问题实际上是独一无二的。我正在开发一个系统,我们希望从他们自己的语言环境中的用户那里获得十进制输入。

我们在加拿大有一个用户习惯于输入法式数字(例如 12,5 是 12 到 13 之间的数字),当他们在“法语”语言环境中将该数字输入我们的系统时,它会被解析为一个介于 12 和 13 之间的数字。当切换到英语并输入“12,5”时,该数字被解析为 125,是预期的十倍。

问题是所使用的数字格式符号集是不同的,并且与解析的执行方式有关。在法语中,该,字符导致解析器从解析整个部分切换到解析小数部分。在英语中, the,是一个可忽略的“分组分隔符”。

当英语用户输入“12,5”时,我想抛出一个错误,因为我们只希望逗号在后面有 3 位数字时出现,没有任何其他标记、输入结束等。

我想在这里非常严格,因为我想消除英语中“12,5”之类的数字中的歧义。那是胖手指,应该是“12.5”还是法语认为他们正在输入一个介于 12 和 13 之间的数字。我想抛出一个错误并确保用户正在输入正是软件期望解析的输入类型。

有没有办法DecimalFormat为我做到这一点,还是我必须自己进行额外的验证?

标签: javaparsingnumber-formatting

解决方案


推荐阅读