所以我遇到了崩溃java.lang.NumberFormatException: Invalid float: "٠"
,因为出于某种原因,在埃及设备上,十进制分隔符为0而不是。
我该如何解决这个问题?它可以处理具有(逗号)小数符号的用户,但这个奇怪的点会导致崩溃。这是问题的代码:
DecimalFormat oneDigit = new DecimalFormat("#.#");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
oneDigit.setDecimalFormatSymbols(dfs);
sevenDaysAverage = Float.valueOf(oneDigit.format(sevenDaysAverage)); // exception here
我的目标是使用点分隔的单个小数格式化数字,因为应用程序是英文的,这就是数字的显示方式。
答案 0 :(得分:3)
String f = "20.0"; // suppose . is weird symbol
String f1 = f.replace(".","."); // replace weird dot with decimal point
然后将f1
转换为String
。
sevenDaysAverage = Float.valueOf(f1);
答案 1 :(得分:0)
您应该使用NumberFormat class.It允许您将字符串解析为区域设置感知号码。这样可以防止您面临小数分隔符为,
的情况。例如,对于德语,它将是:
NumberFormat nf_ge = NumberFormat.getInstance(Locale.GERMAN);
String number_ge = nf_ge.format(1000000);
答案 2 :(得分:0)
如果您希望分组分隔符成为一个点,则可以使用欧洲语言环境:
NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
DecimalFormat df = (DecimalFormat)nf;
或者,您可以使用DecimalFormatSymbols
类更改格式方法生成的格式化数字中出现的符号。这些符号包括小数分隔符,分组分隔符,减号和百分号等等:
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);
答案 3 :(得分:-1)
这是阿拉伯语零而不是小数点,
答案 4 :(得分:-2)
在使用值“0”之前,将其传递给BigDecimal Object并使用返回的值。
int value = Integer.valueOf(new BigDecimal("٠"));