java.lang.NumberFormatException:无效的float:“0”

时间:2015-02-04 16:29:51

标签: java android localization number-formatting

所以我遇到了崩溃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

我的目标是使用点分隔的单个小数格式化数字,因为应用程序是英文的,这就是数字的显示方式。

5 个答案:

答案 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("٠"));