在我的应用程序中,我使用文本框输入十进制数字值。

从那里,我用

Double.valueOf();


获得双倍的价值。这可以正常工作,除非某些具有不同区域设置的用户遇到错误。

我如何确保不会发生这种情况?另外,我应该使用Double.ParseDouble()还是Double.valueOf()?

谢谢。

最佳答案

我使用以下Java方法来解析已经
由用户键入并存储在字符串s中。

但是,我知道用户使用的语言环境。如果你不
知道然后很难确定如何解析数字
因为诸如“ 100.000”之类的值表示不同的含义
在不同的区域。

NumberFormat numberFormat = DecimalFormat.getInstance(locale);
numberFormat.setGroupingUsed(false);
ParsePosition parsePosition = new ParsePosition(0);
Number n = numberFormat.parse(s, parsePosition);
if (n == null || parsePosition.getErrorIndex() >= 0 || parsePosition.getIndex() < s.length())
{
  /* not a valid number */
}

10-07 20:51