【问题标题】:Converting to and from Doubles and Strings independent of locale独立于语言环境在双精度和字符串之间进行转换
【发布时间】:2011-12-10 19:28:23
【问题描述】:

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

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

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

public String doubleToString(double d, String pattern){

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

        return df.format(d);
    }

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

我无法弄清楚导致崩溃的原因,我什至无法自己测试它,因为我的设备上没有这些语言环境。

任何帮助将不胜感激!

【问题讨论】:

  • 我没有回答您的问题,但您可以通过设置 Android 模拟器的语言/区域设置并运行您的应用程序来使用其他区域设置进行测试。

标签: android string double locale


【解决方案1】:

您可以使用Locale.US 代替Locale.getDefault。您的双精度字符串表示显然不适合与人类直接交互,因此当前语言环境绝对不应该影响它们的解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多