在android手机中,此方法正常工作。它需要任何双数并且在点后改为两位小数。但在星系标签中,数字变为不是0.00,而是0,00。所以,当我从String转换为double时,我得到了异常。为什么它是这样的?因为平板电脑的局部性的 Android:奇怪的星系标签行为
回答
它,用在平板电脑上设定的地点的数字分隔符为,
,而在其他地方(手机为例)是.
。
可以使用这段代码改变地方:
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Local.GERMAN);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
DecimalFormat df = new DecimalFormat(formatString, otherSymbols);
当前本地可以使用Locale.LOCALITY
可以在java.util.Local
在这里找到可以得到对你是一个workaround如果你喜欢。
这是一个非常漂亮的question with related answers(包括我放在这里的)给你。
我试图玩locale和DecimalFormat类和所有这些分隔符的东西,但问题没有解决。它给我返回了我无法解析的错误结果。因此,我通过给出包含100 * d(输入)的浮点数来使用Math.round(float)
,所以在结束之后,我除以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;
}
我觉得这不是最好的主意,但它的实际工作
这个想法很好,但不知道为什么123546789转换为2147483647.它失败的地方是'Math.round ()'用过。有任何想法吗? – 2012-04-25 11:10:04
忘掉这个解决方案。我回到了Serdalis之一,并将语言环境改为美国(即使我不是这里的) – 2012-04-25 13:40:46
没关系,它的美妙之处在于它只会改变十进制格式符号而不会改变其他任何东西:D,因此程序的其余部分将会仍然像你在当地一样行事。 – Serdalis 2012-04-25 13:44:59
- 1. 安卓相机setDisplayOrientation:奇怪的星系标签行为
- 2. DIV标签行为奇怪
- 3. 奇怪的星号行为
- 4. 流星奇怪的行为
- 5. 三星设备中带有中心标签的Android WebView的奇怪行为
- 6. 奇怪的绘图行为与标签
- 7. 锚标签行为很奇怪
- 8. Android游标奇怪的行为
- 9. 奇怪的标签
- 10. jQuery UI的标签添加标签奇怪的行为
- 11. 星云中的奇怪行为CDateTime
- 12. 奇怪的css流星行为
- 13. 奇怪JQuery的行为流星应用
- 14. Android数据库游标行为奇怪
- 15. Android中的奇怪行为
- 16. 奇怪的BLE行为Android
- 17. Android - 奇怪的TextView行为
- 18. Android - onDataChange()奇怪的行为
- 19. Android android.util.Patterns.EMAIL_ADDRESS奇怪的行为
- 20. Android Cardview奇怪的行为
- 21. Android AsyncTask奇怪的行为
- 22. 奇怪的Android Studio行为
- 23. Android:奇怪的GregorianCalendar行为
- 24. Android SeekBar奇怪的行为
- 25. android 4.0.4奇怪的行为
- 26. 奇怪的图标行为
- 27. 奇怪的光标行为
- 28. 标签标签0的奇怪问题?
- 29. 奇怪的标签定位
- 30. 标签奇怪的问题
或者只是指定的行为,你所希望的方式,当然是一个语言环境。 – 2012-04-24 06:28:40
@JonSkeet是的,但也许他们喜欢他们住的地方:P,但这是真的。 – Serdalis 2012-04-24 06:30:27
我试过这个'String rezS = twoDForm.format(d); \t if(rezS.contains(“,”)){ \t \t rezS.replace(',','。'); \t}',我试图把','换成'。',但似乎不起作用。它仍然以','返回。我会尝试更改分隔符,因为您在代码中提到 – 2012-04-24 06:32:32