Locale独立String要加倍

Mat*_*att 3 string double parsing android

在我的应用程序中,我编辑了文本框,用户输入的小数值是应用程序用来运行计算的.

其他区域设置中的某些用户在输入数字时会报告问题,例如输入值和显示不同的值.我试图通过使用此方法从editText获取值来解决此问题:

public double stringToDouble(String s){
        if (nf == null){
            nf = NumberFormat.getInstance(Locale.US);
        }
        try {
            return nf.parse(s).doubleValue();
        } catch (ParseException e) {
            e.printStackTrace();
            return 0.0;
        }
    }
Run Code Online (Sandbox Code Playgroud)

val = stringToDouble(et.getText().toString());
Run Code Online (Sandbox Code Playgroud)

但显然这仍然不适合某些人.

斯洛文尼亚的一位用户报告说,如果可行的话

  • 设置; 语言和键盘:
  • 选择语言:设为英语(斯洛文尼亚)
  • 触摸输入:只设置为英语和任何语言(我的情况斯洛文尼亚)
  • 双语预测:关闭
  • 文字预测:关闭

获取double值的正确方法是什么?谢谢

Mat*_*att 7

从它的外观来看,正确的方法是:

public double stringToDouble(String s){
        if (nf == null){
            nf = NumberFormat.getInstance(Locale.getDefault());
        }
        try {
            return nf.parse(s).doubleValue();
        } catch (ParseException e) {
            e.printStackTrace();
            return 0.0;
        }
    }
Run Code Online (Sandbox Code Playgroud)

到目前为止,似乎对我有用.