請看看下面的代碼:失去精度,同時打印浮動
float num = 72000000.69f;
System.out.println(String.format("%.2f", num));
輸出:72000000.00
我失去精度。我試圖通過轉換爲浮動到BigDecimal然後打印值,但它沒有幫助。
任何方式來保持精度?
請看看下面的代碼:失去精度,同時打印浮動
float num = 72000000.69f;
System.out.println(String.format("%.2f", num));
輸出:72000000.00
我失去精度。我試圖通過轉換爲浮動到BigDecimal然後打印值,但它沒有幫助。
任何方式來保持精度?
浮點數有七位數的精度。你有你的七位數字。
如果您想要更高的精度,請改用double。
BigDecimal num = new BigDecimal("72000000.69");
System.out.println(num);
輸出:
72000000.69
使用BigDecimal的,浮點類型不存儲所有號碼的方式,你覺得
問題是,我從另一個應用程序獲取這個值,它將其作爲一個浮點值發送。我目前沒有改變數據類型的特權。但是,如果我們確信沒有其他選擇,我可以向上級提出這個問題。 – Ayushi
試試這個測試
System.out.println(72000000.69f == 72000000f);
它打印
true
這意味着.69由於浮點數的低精度而被簡單切斷,它根本就不存在,你不能以任何方式恢復它。
Hi Curt。從哪裏得到這個信息,浮點數有七位數的精度?你有可能分享一些鏈接嗎? – Ayushi
嘿,我在維基上得到了這個。謝謝。 – Ayushi
http://www.homeandlearn.co.uk/java/short_float_variables.html – Curt