程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA對大數值的計算

JAVA對大數值的計算

編輯:關於JAVA

相信大家都可能碰到要對超過17位整數的值進行計算,Java中對double的值超過8位就會變成科學計數法,所以我用了DecimalFormat進行格式化,當pattern為“#################.##”,值為“123456789012345.78”時可以正常顯示;沒有格式化時顯示為1.2345678901234578E14 格式化後為123456789012345.78但值超過15位整數情況就不一樣了,如值為“1234567890123456.78”格式化後為1234567890123456.8,已經進行了四捨五入了。最終查了一下javadoc,發現在java.math包中有一類BigDecimal可以解決大數值的計算問題,還挺不錯,最終解決了問題 。

例://測試BigDecimal

BigDecimal bd=new BigDecimal("12345678901234578.789");

System.out.println("BigDecimal * 12.5="+(bd=bd.multiply(new BigDecimal(12.5))));

System.out.println("BigDecimal / 12.5="+bd.divide(new BigDecimal(12.5)));

輸出為:BigDecimal * 12.5=154320986265432234.8625

BigDecimal / 12.5=12345678901234578.789

完全正確!

注重:BigDecimal使用的時候要注重它在計算機內部表示的形式,new BigDecimal(double)這個構造函數產生的BigDecimal類會變成不可預料,因為在會用0.100000000*******來表示0.1,而用0.29999999*****來表示,假如你沒有對結果進行處理,可能會有bug產生。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved