Java 怎样才能使DecimalFormat更严格?

Java 怎样才能使DecimalFormat更严格?,java,parsing,number-formatting,Java,Parsing,Number Formatting,有一些相关的问题,但我认为这一个实际上是独一无二的。我正在开发一个系统,我们希望从用户自己的语言环境中获得十进制输入 我们在加拿大有一个用户,他习惯于以法语输入数字(例如,12,5是一个介于12和13之间的数字),当他们在“法语”区域将该数字输入我们的系统时,它会被解析为介于12和13之间的数字。当转换成英语并输入“12,5”时,数字被解析为125,是预期的十倍 问题在于所使用的数字格式符号集不同,并且与解析的执行方式有关。在法语中,,字符使解析器从解析整个部分切换到解析小数部分。在英语中,,是

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

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

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

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

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


有没有办法让
DecimalFormat
帮我做这件事,或者我需要自己进行额外的验证?

只需检查区域设置和输入字符串。如果您在法语区域中也检测到小数点,那么抛出一个错误就好了。我当前的解决方案从
DecimalFormatSymbols
构建一个适合于该区域的正则表达式,并在解析之前进行严格的健全性检查。