2013-01-07 41 views
-1

可能重複:
How to format an integer to have two decimals?如何格式化整數使其有兩位小數?

我與這段代碼在這裏掙扎。

DecimalFormat df = new DecimalFormat("00.##"); 
df.setMinimumFractionDigits(2); 
return df.format(Integer.valueOf(amount)); 

這就是我需要:

輸入:2,輸出:2.00

輸入20,輸出:20,00

輸入1003,輸出:100,30

輸入120323,輸出:1.203,23(一千二百三十二美分)

我不能使用DecimalFormat,因爲我沒有模式「example ##。##」。

我應該總是有兩位小數。如果金額小於100,那麼我只需要自己加上「.00」,如果它大於100,則表示最後兩位數字是我需要的兩位小數。他們是美分。

任何人都可以幫助我嗎?

+3

你在輸出中混合使用','和'.',這是什麼?應該2 =>「2.000」還是「2,00」? – Patrick

+1

這是你的15分鐘老問題的轉發。你說「如果金額少於100 _...」,聽起來像你在代碼中也需要。 – jlordo

回答

4

如果你想添加兩位小數(這將永遠是.00這是一個有點多餘。

return String.format("%.2f", amount > 100 ? amount/100.0 : (double) amount); 

我建議你保持一組的單位,你應該能夠始終使用美分。如果你不這樣做,你可能會得到混亂。例如,你有100個和10000這兩者都是100.00

+2

你真的指'ammount/100'(雙米)嗎? :) –

+0

這很好,彼得。 我自己告訴「如果數值小於100」,我沒有把它加到算法中。感謝您向我展示道路。歡呼 –

+1

謝謝@fdiv_bug。我改變了它以保持格式一致。 –

1

如果量小於100,那麼我只有走量 本身加「.00」如果它大於100,則表示最後兩個爲 數字是我需要的兩位小數。

首先你需要解決這個問題。一個類或一個本地類型只能保存一種數據,並且不應該爲其他類或代碼提供詳細的知識,以便如何根據情況的情況處理數據

得到的東西要麼返回所有情況下的便士,要麼讓它返回一個支持小數點的數字。更好的解決方案是便士的數量。

這樣你就不必在你的格式中放置邏輯,當然你不需要格式化同樣的東西。

+0

那太棒了。但我不能要求整個組織多年來一直使用這個相當老的系統來改變他們的數據表示,因爲我無法使用它。 謝謝你:) –

+0

你總是可以將舊代碼包裝到新的界面中。 Feathers檢查「使用遺留代碼有效地工作」。即使你沒有在當前的情況下使用該書中的所有技術,接觸它們也會有很多好處。 –

+0

嗨@Edwin Buck。感謝您的提示,我一定會確保看看它。 –

相關問題