在 android 手机中,这种方法可以正常工作。它需要任何双精度数并在点后更改为两位小数。但在星系选项卡中,数字不是 0.00,而是 0,00。所以,当我从 String 转换为 double 时,我得到了异常。为什么会这样?
问问题
255 次
2 回答
2
这是因为您的平板电脑的位置,在平板电脑上设置的位置数字分隔符是,
,而在其他位置(例如您的手机)上是.
。
您可以使用以下代码更改位置:
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Local.GERMAN);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);
当前本地可以使用Locale.LOCALITY
可以在找到java.util.Local
如果您愿意,这里有一个解决方法。
这是一个非常好的问题,并为您提供了相关答案(包括我放在这里的答案)。
于 2012-04-24T06:27:38.477 回答
0
我尝试使用语言环境和 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;
}
我认为这不是最好的主意,但它确实有效
于 2012-04-24T15:07:53.253 回答