2011-10-10 40 views
1

爲了得到小數點值最多兩位小數點我使用這個函數。我該如何改變這個函數才能得到類似0.00的效果?

double roundTwoDecimals(double d) {    
    DecimalFormat twoDForm = new DecimalFormat("##.##");   
    return Double.valueOf(twoDForm.format(d)); 

但雖然有一個像「5.50」的值,那麼與這個功能,我只有「5.5」。 而不是我想要得到與上述功能5.50那麼我應該改變?

請給我更新的功能或任何建議來改變輸出像「0.00」。 謝謝。

+0

什麼是你想在這裏完成?你是否真的想要將這個數字捨去,然後返回一個double?或者你只是想格式化數字顯示?你總是*會從這個方法返回一個非格式化的數字,因爲'double's不會保留你將數字格式化的前導/尾隨零。 –

+0

我只想得到double值的分數值,但它應該有兩個小數點。我不會繞過價值。好。 –

+0

@iDroid資源管理器 - 在這裏所有用戶都告訴同樣的事情。 – user370305

回答

2

您的示例適用於將數字四捨五入爲2位數。但是你將失去尾隨零,因爲數字變量(double,float,...)不存儲任何格式化信息。

如果你想看到尾隨零(如5.50),你必須在格式化輸出的數字:

DecimalFormat twoDForm = new DecimalFormat("#0.00");   
System.out.println(twoDForm.format(d)); 
+0

它的工作正常。 –

2

Use the format

new DecimalFormat("#0.00") 

當您使用#,零個值顯示爲不存在。使用0將確保顯示數字或0。

+0

我已經改變了這個甲酸鹽的功能,但我仍然得到了同樣的結果。 –

+0

仍然沒有與這個犯人合作。 –

0

DecimalFormat.format返回一個String(不是StringBuffer),然後獲取Double.valueOf(...)。然後返回double值,我們在打印時使用自己的toString()來顯示它。您需要對返回的double值運行DecimalFormat.format。

+0

['DecimalFormat#format(double)'](http://download.oracle.com/javase/7/docs/api/java/text/NumberFormat.html#format(double))不會返回一個'StringBuffer '。 –

+0

@RobHruska:謝謝你的幫助。我沒有檢查java 7.在我看到的Android(http://developer.android.com/reference/java/text/DecimalFormat.html)和java 6(http://download.oracle.com /javase/6/docs/api/java/text/DecimalFormat.html)我沒有看到這個方法。我應該進一步搜索。 – mikey

+0

我不想要字符串。我剛纔提到「」來區分價值。 –

相關問題