android - 与区域设置无关的 double 和字符串转换

标签 android string double locale

我遇到的问题是,将区域设置设置为非美国国家/地区的用户在将 double 转换为字符串或从字符串转换时出错。到目前为止,我相信我有将字符串转换为 double 的正确方法:

public double stringToDouble(String s){
        try {
            return NumberFormat.getInstance(Locale.getDefault()).parse(s).doubleValue();
        } catch (ParseException e) {
            e.printStackTrace();
            return 0.0;
        }
    }

这是从 EditText 框中获取输入并将其转换为 double 值。但是,我在将 double 转换回字符串以填充其他 EditText 框时遇到问题。这是我正在使用的用户报告崩溃的代码:

public String doubleToString(double d, String pattern){

        DecimalFormat df =(DecimalFormat) NumberFormat.getInstance(Locale.getDefault());
        df.applyLocalizedPattern(pattern);

        return df.format(d);
    }

我根据编辑文本框的小数位数使用模式字符串,例如“#0.00”

我不知道是什么导致了崩溃,我什至无法自己测试,因为我的设备上没有这些语言环境。

如有任何帮助,我们将不胜感激!

最佳答案

您可以使用 Locale.US 而不是 Locale.getDefault。你的 double 字符串表示显然不是为了直接与人类交互,因此当前的语言环境绝对不应该影响他们的解释。

关于android - 与区域设置无关的 double 和字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8459224/

相关文章:

java - 在 Eclipse 中对齐多行 Java 字符串

jQuery 从字符串中提取单词

string - 可视化算法的工具

C# double 进入 MySql db double 不工作

mysql - 如何在 MySQL 中将 BLOB 转换为 DOUBLE

android - 从变量引用 Android XML 资源文件

java - javafxports 项目使用哪种属性文件编码?

java - Android Studio 中有什么方法可以让我们的应用程序防篡改吗?

C++ 冒泡排序双向链表

android:当主题设置为 NoTitleBar.Fullscreen 时启用 Activity 标题