Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NumberFormatException:无效浮点值:“0”٠&引用;_Java_Android_Localization_Number Formatting - Fatal编程技术网

java.lang.NumberFormatException:无效浮点值:“0”٠&引用;

java.lang.NumberFormatException:无效浮点值:“0”٠&引用;,java,android,localization,number-formatting,Java,Android,Localization,Number Formatting,所以我得到了一个崩溃java.lang.NumberFormatException:Invalid float:“٠”,因为在埃及设备上,出于某种原因,十进制分隔符是٠而不是。 我如何解决这个问题?它可以处理将(逗号)作为十进制符号的用户,但这个奇怪的点会导致崩溃。以下是问题所在的代码: DecimalFormat oneDigit = new DecimalFormat("#.#"); DecimalFormatSymbols dfs = new DecimalFormatSymbols();

所以我得到了一个崩溃
java.lang.NumberFormatException:Invalid float:“٠”
,因为在埃及设备上,出于某种原因,十进制分隔符是٠而不是。 我如何解决这个问题?它可以处理将(逗号)作为十进制符号的用户,但这个奇怪的点会导致崩溃。以下是问题所在的代码:

DecimalFormat oneDigit = new DecimalFormat("#.#");
DecimalFormatSymbols dfs = new DecimalFormatSymbols();
dfs.setDecimalSeparator('.');
oneDigit.setDecimalFormatSymbols(dfs);
sevenDaysAverage = Float.valueOf(oneDigit.format(sevenDaysAverage));  // exception here
我的目标是将一个数字格式化为一个由点分隔的十进制数,因为该应用程序是英文的,因此数字应该以英文显示

String f = "20.0"; // suppose . is weird symbol  
String f1 = f.replace(".","."); // replace weird dot with decimal point  
然后将
f1
转换为
String

sevenDaysAverage = Float.valueOf(f1); 
您应该使用类。它允许您将字符串解析为可识别区域设置的数字。这将防止您遇到小数分隔符为
的情况,例如,如果是德语,则为:

NumberFormat nf_ge=NumberFormat.getInstance(Locale.derman);
字符串编号=nf格式(1000000);

这是阿拉伯语的零而不是小数点,

如果希望分组分隔符是点,可以使用欧洲语言环境:

    NumberFormat nf = NumberFormat.getNumberInstance(Locale.GERMAN);
    DecimalFormat df = (DecimalFormat)nf;
或者,您可以使用
DecimalFormatSymbols
类更改由format方法生成的格式化数字中出现的符号。这些符号包括十进制分隔符、分组分隔符、减号和百分号等:

    DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(currentLocale);
    otherSymbols.setDecimalSeparator(',');
    otherSymbols.setGroupingSeparator('.'); 
    DecimalFormat df = new DecimalFormat(formatString, otherSymbols);

我不确定那是十进制分隔符。当我用谷歌搜索它时,我发现它是最棒的。