1
在我的应用程序中,我使用文本框输入十进制数字值。双倍语言环境错误的字符串
从那里,我用
Double.valueOf();
来获取值作为一个双。这工作正常,除了一些用户使用不同的语言环境出现错误。
我如何确保这不会发生?另外,我应该使用Double.ParseDouble()还是Double.valueOf()?
谢谢。
在我的应用程序中,我使用文本框输入十进制数字值。双倍语言环境错误的字符串
从那里,我用
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 */
}
还有'DecimalFormat.getInstance()'它使用默认的语言环境。 Android应该没问题。 –
我不知道这是否属于您的情况,但请注意,不同的区域设置有不同的小数点,例如, “,“ 代替 ”。”。对于ParseDouble()vs valueOf()请参阅http://stackoverflow.com/questions/3708931/whats-the-difference-between-double-valueofstring-s-and-double-parsedoublestri –
是的,我认为这是问题,我我只是不确定处理它的最佳方式......感谢这个链接,它看起来应该是使用parseDouble而不是valueOf。 – Matt