在android手机中,这种方法运行良好。它接受任何双精度数,并在点后更改为两个小数。但在galaxy选项卡中,数字不是0.00,而是0,00。所以,当我从字符串转换为双精度时,我得到了异常。为什么会这样呢?
发布于 2012-04-24 06:27:38
这是因为你的平板电脑的位置,在平板电脑上设置的数字分隔符是,
,而在其他位置(例如你的手机)上是.
。
您可以使用这段代码更改位置:
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Local.GERMAN);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);
可以使用java.util.Local
中的Locale.LOCALITY
获取当前本地信息
如果你愿意,这里有一个workaround给你。
这是一个非常好的question with related answers (包括我放在这里的那个)。
发布于 2012-04-24 15:07:53
我试着尝试使用locale和DecimalFormat类以及所有这些分隔符的东西,但是问题没有得到解决。它返回了我无法解析的错误结果。所以,我破解了它,并使用了Math.round(float)
,通过给出包含100 *d(输入)的浮点数,所以在循环之后,我除以这100,得到分隔符后面的两个小数。
public static float roundTwoDecimals(double d) {
float rez = (float) (d * 100); //multiply for round
rez = Math.round(rez);
int rezInt = (int) rez;
rez = rezInt; //convert to int to remove unwanted tail
rez = rez / 100; //get back to two decimals float
return rez;
}
我认为这不是最好的主意,但它确实有效。
https://stackoverflow.com/questions/10292709
复制