我的應用程序的用戶是有一個錯誤和應用程序崩潰的Android - 雙無效「###」
我看了報告和它的說明
產生的原因:java的。 lang.NumberFormatException:無效的雙:「1,36」
我已複製我的應用程序輸入的數據,我沒有這個問題在所有
我甚至問她她的數據庫給我這樣我可以導入確切的數據,它仍然可以爲我工作
我很困惑,當雙是越來越格式一樣,因爲我看不到我的代碼在那裏會得到一個格式化的任何地方,
任何建議,這是怎麼回事?
我的應用程序的用戶是有一個錯誤和應用程序崩潰的Android - 雙無效「###」
我看了報告和它的說明
產生的原因:java的。 lang.NumberFormatException:無效的雙:「1,36」
我已複製我的應用程序輸入的數據,我沒有這個問題在所有
我甚至問她她的數據庫給我這樣我可以導入確切的數據,它仍然可以爲我工作
我很困惑,當雙是越來越格式一樣,因爲我看不到我的代碼在那裏會得到一個格式化的任何地方,
任何建議,這是怎麼回事?
我面臨同樣的問題。我將float值轉換爲String。是的,它必須是一個地區問題。如其中一條評論所述,某些語言環境使用小數點分隔符。 起初,我將浮喜歡 -
String.format("%.1f", value);
然後,我改變了代碼
String.format(Locale.ENGLISH, "%.1f", value);
所以,迫使串用英語本地轉化爲我工作。
簡單的方法是(做你parce以上):
if (str.contains(",")) {
str.replace(",",".");
}
嗨@walkmn感謝您的建議,唯一的問題是,我將不得不這樣做每次雙重是解析,這會有點痛苦,這更多的是解決問題 – Sjharrison
您似乎遇到了一個區域設置問題。不同的區域設置有.
和,
作爲分數部分分隔符。您可以使用java.text.NumberFormat
來處理您想要的語言環境,例如FRANCE
代表逗號,US
代表點:
// somewhere at Utils.java:
public static final NumberFormat DOUBLE_FORMAT = NumberFormat.getInstance(Locale.FRANCE);
// at call site:
double d = Utils.DOUBLE_FORMAT.parse("1,234").doubleValue();
用戶是法國人嗎?必須是一個語言環境問題 – KeatsPeeks
正如你所看到的那樣,在編號1後面有逗號。並且在你的代碼中的一些地方,你將字符串解析爲double.user可能會輸入數據,如1,36 –
無效的雙精度:「1,36」, - >它是有效的雙精度:「1.36」 – walkmn