2013-07-09 99 views
1

請看看下面的代碼:失去精度,同時打印浮動

float num = 72000000.69f; 
    System.out.println(String.format("%.2f", num)); 

輸出:72000000.00

我失去精度。我試圖通過轉換爲浮動到BigDecimal然後打印值,但它沒有幫助。

任何方式來保持精度?

回答

5

浮點數有七位數的精度。你有你的七位數字。

如果您想要更高的精度,請改用double。

+0

Hi Curt。從哪裏得到這個信息,浮點數有七位數的精度?你有可能分享一些鏈接嗎? – Ayushi

+0

嘿,我在維基上得到了這個。謝謝。 – Ayushi

+0

http://www.homeandlearn.co.uk/java/short_float_variables.html – Curt

2
BigDecimal num = new BigDecimal("72000000.69"); 
System.out.println(num); 

輸出:

72000000.69 
0

使用BigDecimal的,浮點類型不存儲所有號碼的方式,你覺得

+0

問題是,我從另一個應用程序獲取這個值,它將其作爲一個浮點值發送。我目前沒有改變數據類型的特權。但是,如果我們確信沒有其他選擇,我可以向上級提出這個問題。 – Ayushi

0

試試這個測試

System.out.println(72000000.69f == 72000000f); 

它打印

true 

這意味着.69由於浮點數的低精度而被簡單切斷,它根本就不存在,你不能以任何方式恢復它。