2012-09-30 67 views
2

我爲一個執行簡單興趣和複利計算的學術項目編寫了一個程序。我遇到的問題是,計算的簡單利息會被截斷,如果該數字沒有除零之外的其他值作爲「美分」(即,它不顯示小數點 - 如果金額是例如1750.00,它將顯示儘管我在我的方法中使用了DecimalFormat來實現複合和簡單的興趣!利息計算器在簡單利息計算中的截斷誤差(涉及DecimalFormat)

我已經廣泛地調試了這個項目,我真的很茫然,到底在想什麼。

從程序的有關摘錄如下:

double p=1.0; // just some sample values for p, r, and y. 
    double r=2.0; 
    double y=3.0; 
    double calculatedInterest = p + (p*(r/100)*y); 
    String output = new String("Computed Simple Interest is: $"); 
    output = output + new DecimalFormat("#.##").format(calculatedInterest); 
    return output; 

我有充分的程序在這裏:

http://pastebin.com/sgg0P5ZQ

[編輯]故事的寓意:如果你不沒有閱讀過您遇到問題或不明白的類的JavaDoc,那麼您將會遇到一段糟糕的時間。符號模式#。##不僅僅是DecimalFormat的通用接口,不同的符號模式可以完成不同的事情。在我的情況下,有必要將#。##更改爲0.00,以便查看我想要的十進制數。非常感謝jpe。

回答

2

看看JavaDoc of DecimalFormat。您使用「#。##」之類的模式。爲#的文檔說:

Symbol Location Localized? Meaning 
# Number Yes  Digit, zero shows as absent 

你應該0.00取代你的格局。

+0

對於特殊模式符號,他們有表中的「0 - Digit」,這是否意味着代替#。##,我使用0.00?我會盡快嘗試 –

+0

你是我的英雄 –

+0

我認爲0.00應該很好。模式#,## 0.00也允許數千個分隔符。 – jpe