2017-10-09 54 views
0

我想格式化數字,並保留2位小數。我不知道爲什麼我的代碼收到錯誤。Android格式使用XML的十進制數

這是我的代碼。

的strings.xml

<resources> 
    <string name="progress">%1$d/%2$d (%3.2f%%)</string> 
</resources> 

MainActivity.java:

int progressCount; 
int totalCount = 3000; 
double percentage; 

for (int x = 0; x < totalCount; x++) { 
    progressCount = x; 
    percentage = ((((double) progressCount)/((double) totalCount)) * 100); 
    Log.i("MainActivity", "Percentage: " + String.format(getString(R.string.progress), progressCount, totalCount, percentage)); 
} 

錯誤遭遇:

所致:java.util.IllegalFormatConve rsionException:%f不能格式化java.lang.Integer參數

我想要這樣的輸出。 1/100(0.01%)

+1

我認爲它必須是(%3 $ .2f %%),而不是(%3.2F %% )在你的資源字符串中。請參閱此處:https://stackoverflow.com/a/32755921/1803222。 –

+0

謝謝。但爲什麼沒有** $ **符號就無法工作? – Jerrol

+0

據我所知,%3 $部分可以幫助系統識別第三個傳遞參數將在那裏使用。 –

回答

2

更換

<string name="progress">%1$d/%2$d (%3.2f%%)</string> 

<string name="progress">%1$d/%2$d (%3$.2f)</string>