Javas DecimalFormat:如何拒绝"无效的"输入分组的小数?
-
16-09-2019 - |
题
在使用下面的数字格式:
NumberFormat amountFormat = NumberFormat
.getNumberInstance(I18N.getThreadLocale());
amountFormat.setMaximumFractionDigits(2);
amountFormat.setMinimumFractionDigits(2);
我得到以下结果时,通过分析
System.out.println(amountFormat.parse(value));
- 10,50 => 1050
- 10,5 => 105
- 0,25 => 25
我知道,在区域设置。英文","是该组的分离器。但我不认为上面的结果有意义。和我们的客户得到奇怪的关于这个格式。
我怎么可以禁止这一组?
我想有结果如下:
- 10,50=>如果
- 10,5=>如果
- 的0,25=>如果
是否有一个标准的方式做到这一点?或者我有节目我自己的数字格式?
解决方案
一个问题是该分组的角色(','英语locale).禁用分组支持为数字格式的实例,则可以简单地援引setGroupingUsed(false)。
然而,这导致一个不同的问题,即数字格式分析从字符串的开始,直到达到一个未知的角色。parse("12foo")将返回12,只是作为分析("10,50")将返回10如果分组是残疾人。如果要检查整个输入串实际上是解析的,你必须使用的分析方法与ParsePosition的论点,并检查它的索引,如果输入串行解析,以结束或者如果分析程序停止在早先的位置。
不隶属于 StackOverflow