2011-08-26 59 views
1

在我的應用程序中,我使用文本框輸入十進制數字值。雙倍語言環境錯誤的字符串

從那裏,我用

Double.valueOf(); 

來獲取值作爲一個雙。這工作正常,除了一些用戶使用不同的語言環境出現錯誤。

我如何確保這不會發生?另外,我應該使用Double.ParseDouble()還是Double.valueOf()?

謝謝。

+0

我不知道這是否屬於您的情況,但請注意,不同的區域設置有不同的小數點,例如, 「,「 代替 」。」。對於ParseDouble()vs valueOf()請參閱http://stackoverflow.com/questions/3708931/whats-the-difference-between-double-valueofstring-s-and-double-parsedoublestri –

+0

是的,我認爲這是問題,我我只是不確定處理它的最佳方式......感謝這個鏈接,它看起來應該是使用parseDouble而不是valueOf。 – Matt

回答

1

我使用下面的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 */ 
} 
+0

還有'DecimalFormat.getInstance()'它使用默認的語言環境。 Android應該沒問題。 –

相關問題