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