我遇到的问题是,将区域设置设置为非美国国家/地区的用户在将 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/