使用GWT NumberFormat,我需要一个十进制格式,基本上不接受小数点字符和零小数位。例如,123应该是有效的,但123.4和123.9应该被拒绝。此外,将十进制值舍入为最接近的整数不是一种选择。 我认为以下内容可行,但事实并非如此:
double val = NumberFormat.getFormat("#0").parse(str);
我绝对需要它来支持GWT i18n格式化,例如","大数字的分隔符。输入" str"例如,参与Parser.parse(text)方法的参数,类似于IntegerParser中的参数。 IntegerParser不能正确验证零小数位,只能舍入值而不是拒绝带小数点的数字。
有什么想法吗?
答案 0 :(得分:0)
它使用了以下方法:
(int) Math.rint(NumberFormat.getDecimalFormat().parse(object.toString()));
更新:
此外,您可以使用LongBox代替TextBox。
答案 1 :(得分:0)
我最终解决问题的方法是在尝试使用NumberFormat解析之前,在输入字符串中显式查找小数点分隔符。这是代码:
final String DECIMAL_SEPARATOR =
LocaleInfo.getCurrentLocale().getNumberConstants().decimalSeparator();
if (str.contains(DECIMAL_SEPARATOR))
throw new ParseException("Invalid integer value (" + str + ")", 0);
return (int) Math.rint(NumberFormat.getDecimalFormat().parse(str));
我仍然有兴趣找到一种更好的方法来使用NumberFormat。