如何解析和格式化GWT中零小数位的整数?

时间:2014-06-06 01:48:39

标签: gwt localization internationalization

使用GWT NumberFormat,我需要一个十进制格式,基本上不接受小数点字符和零小数位。例如,123应该是有效的,但123.4和123.9应该被拒绝。此外,将十进制值舍入为最接近的整数不是一种选择。 我认为以下内容可行,但事实并非如此:

double val = NumberFormat.getFormat("#0").parse(str);

我绝对需要它来支持GWT i18n格式化,例如","大数字的分隔符。输入" str"例如,参与Parser.parse(text)方法的参数,类似于IntegerParser中的参数。 IntegerParser不能正确验证零小数位,只能舍入值而不是拒绝带小数点的数字。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用IntegerParser

它使用了以下方法:

(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。