在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