java - DecimalFormat 如何更严格?
问题描述
SO上有一些相关的问题,但我认为这个问题实际上是独一无二的。我正在开发一个系统,我们希望从他们自己的语言环境中的用户那里获得十进制输入。
我们在加拿大有一个用户习惯于输入法式数字(例如 12,5 是 12 到 13 之间的数字),当他们在“法语”语言环境中将该数字输入我们的系统时,它会被解析为一个介于 12 和 13 之间的数字。当切换到英语并输入“12,5”时,该数字被解析为 125,是预期的十倍。
问题是所使用的数字格式符号集是不同的,并且与解析的执行方式有关。在法语中,该,
字符导致解析器从解析整个部分切换到解析小数部分。在英语中, the,
是一个可忽略的“分组分隔符”。
当英语用户输入“12,5”时,我想抛出一个错误,因为我们只希望逗号在后面有 3 位数字时出现,没有任何其他标记、输入结束等。
我想在这里非常严格,因为我想消除英语中“12,5”之类的数字中的歧义。那是胖手指,应该是“12.5”还是法语认为他们正在输入一个介于 12 和 13 之间的数字。我想抛出一个错误并确保用户正在输入正是软件期望解析的输入类型。
有没有办法DecimalFormat
为我做到这一点,还是我必须自己进行额外的验证?
解决方案
推荐阅读
- java - lock.notify() 是否仅在线程中的循环结束时执行
- angular - NGRX - updateMany 删除密钥
- ios - Alamofire)我想要处理总是新的请求
- lua - Premake,命令行选项不做任何事情
- c - 进程使用 sigint_handler 捕获 SIGINT 信号
- reactjs - 如何仅在第一次渲染childComponent时跳过childComponent中getDerivedStatefromProps()中的状态更新
- javascript - 我如何操作fabricjs中的所有对象?
- unit-testing - 如何使用sqlmock mock db,函数内获取的db连接
- python - 在枚举中定义一个列表以将枚举标识为子组的一部分
- json - 使用 json 文件中的动态字符串进行颤振国际化