2011-06-22 244 views
13

這裏是小代碼來說明我所看到的DecimalFormat的四捨五入

float floater = 59.999f; 

DecimalFormat df = new DecimalFormat("00.0"); 

System.out.println(df.format(floater)); 

此打印:

60.0 

我想它打印

59.9 

我需要做什麼來做?

+0

請查看'Math.round'。 –

回答

21

使用DecimalFormat之前添加此行:

df.setRoundingMode(RoundingMode.DOWN); 

看看其他舍入模式,看看哪一個最適合你。

注意:此方法僅適用於JDK 1.6或更高版本

+0

[DecimalFormat.setRoundingMode(java.math.RoundingMode)](http://docs.oracle.com/javase/7 /docs/api/java/text/DecimalFormat.html#setRoundingMode(java.math.RoundingMode)) – Julien

1
float d = 59.999f; 
BigDecimal bd = new BigDecimal(d); 
// Use the returned value from setScale, as it doesn't modify the caller. 
bd = bd.setScale(1, BigDecimal.ROUND_FLOOR); 
String formatted = bd.toString(); 
+0

通常這是不好的決定,因爲它會改變數據,而我們需要更改視圖 –

+1

@ om-nom-nom:我寧願說這太糟糕了。並且需要創建一個BigDecimal。但至於它如何「改變數據」 - 我沒有看到......原始的浮動塊是未觸及過的,可供任何東西使用。你會詳細說明你的評論嗎? – ppeterka

+0

@ppeterka公平點。這比一年前少了一點,可能我是從這個角度思考的,我怎麼輪到我的bigdecimal *的觀點,現在不能說 –