2013-07-10 18 views
3

爲什麼這些測試的行爲不同?我如何正確地將一個浮動Android圓?

public void testRoundFloat() { 
    final NumberFormat format = NumberFormat.getNumberInstance(); 
    format.setMaximumFractionDigits(2); 
    format.setMinimumFractionDigits(2); 
    format.setRoundingMode(RoundingMode.HALF_UP); 
    assertEquals("102,345.56", format.format(102345.556f)); 
} 

public void testRoundDouble() { 
    final NumberFormat format = NumberFormat.getNumberInstance(); 
    format.setMaximumFractionDigits(2); 
    format.setMinimumFractionDigits(2); 
    format.setRoundingMode(RoundingMode.HALF_UP); 
    assertEquals("102,345.56", format.format(102345.556d)); 
} 

第一測試四捨五入浮子失敗,因爲格式的結果是xxx.55,第二測試四捨五入雙成功。我運行在Android 4.2.2測試(17級)

感謝 馬庫斯

回答

0

roundedNo =(((INT)(nFloatt * 100))+ 5)/ 100 是四捨五入到小數點後2位的最簡單的方法,但總是有誤差浮點數學只是因爲它以基數2存儲和計算並以十進制顯示。