0
我試圖從用戶解析輸入字符串,並將其轉換成浮動Android的 - 如何正確地解析字符串漂浮(價格數字格式:整數,小數或兩者)
String[] inputs = {
"100",
"100.0",
"100.00",
"100.00000",
"100.1",
"100.10",
"100.11",
"100.111",
"1.0",
"0.1",
"0.10",
"0.1000",
"0.111",
"100,00",
"1,000.15"
};
for (String input : inputs) {
try {
input = input.replace(",", ".");
Float value = Float.valueOf(input);
if (value == 0F) {
Log.d("APP", "--> NOPE: " + value);
continue;
}
String oldInput = input;
DecimalFormat dc = new DecimalFormat(value > 1F ? "#.00" : "#0.00");
input = dc.format(value);
value = Float.valueOf(input);
Log.d("APP", oldInput + " -> " + value);
}
catch (NumberFormatException e) {
e.printStackTrace();
}
}
其中給出我下面的輸出:
100 -> 100.0
100.0 -> 100.0
100.00 -> 100.0
100.0000 -> 100.0
100.1 -> 100.1
100.10 -> 100.1
100.11 -> 100.11
100.111 -> 100.11
1.0 -> 1.0
0.1 -> 0.1
0.10 -> 0.1
0.1000 -> 0.1
0.111 -> 0.11
100,00 -> 100.0
當我輸入字符串像這樣出現的問題:
1,000.25
A java.lang.NumberFormatException: multiple points
拋出異常
- 是
1,000.25
有效輸入? (貨幣來自美國?) - 是否有更好或更優化的解析輸入的方式?
','的格式,使用替代 –
1,000.25刪除替換字符後1.000.25這不是一個有效的float, 如果 '' 只是你可以改變'input = input.replace(「,」,「。」);'to'input = input.replaceAll(「,」,「」);' –