2015-11-05 42 views
-3

UPDATE:在上面的問題中刪除「in Android 5.0」,因爲我覺得它與版本沒有任何關係,但取決於語言環境。爲什麼String.format(「%。2f」,10.0F)返回值10,00而不是10.00?

以下代碼的常見輸出爲10.00。但在Android 5.0中,它返回值10,00

String value = String.format("%.2f", 10.0F); 
System.out.println("Value is "+value); //For Console Output 
Log.w("NumberClass.java","Value is "+value); //For Logcat Output 

String.format("%.2f", 10.0F); 

功能android的棒棒糖改變?如果那麼這個奇怪的行爲的解決方案是什麼?

我需要10.00作爲輸出。

+5

它使用默認的語言環境。您應該使用特定的區域設置來初始化格式器。 –

+1

[對我來說10,00是一個很好的... 10.00是壞的...](https://en.wikipedia.org/wiki/Decimal_mark#Countries_using_Arabic_numerals_with_decimal_comma) – Selvin

回答

4

的文檔爲String.format()說:

返回一個本地化的格式化字符串,使用附帶的格式和 參數,使用用戶的默認語言環境。

所以,如果你是法國人,將會使用昏迷,但如果你是美國人,將會使用一個點。

您可能希望使用String.format (Locale locale, String format, Object... args)(這是您當前使用的函數的重載)來獲得所需的行爲。 (請參閱文檔here)。你可以給它一個初始化的Locale來獲得你想要的行爲。有關Locale的更多信息,請查閱文檔here

1

試試這個

String value2 = String.format(getResources().getConfiguration().locale,"%.2f", 10.0F); 
相關問題