1、簡介
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。雙精度浮點型變量double能夠處理16位有效數。在實際應用中,須要對更大或者更小的數進行運算和處理。float和double只能用來作科學計算或者是工程計算,在商業計算中要用java.math.BigDecimal。BigDecimal所建立的是對象,咱們不能使用傳統的+、-、*、/等算術運算符直接對其對象進行數學運算,而必須調用其相對應的方法。方法中的參數也必須是BigDecimal的對象。構造器是類的特殊方法,專門用來建立對象,特別是帶有參數的對象。java
2、構造器描述
BigDecimal(int) 建立一個具備參數所指定整數值的對象。
BigDecimal(double) 建立一個具備參數所指定雙精度值的對象。
BigDecimal(long) 建立一個具備參數所指定長整數值的對象。
BigDecimal(String) 建立一個具備參數所指定以字符串表示的數值的對象。git
3、方法描述
add(BigDecimal) BigDecimal對象中的值相加,而後返回這個對象。
subtract(BigDecimal) BigDecimal對象中的值相減,而後返回這個對象。
multiply(BigDecimal) BigDecimal對象中的值相乘,而後返回這個對象。
divide(BigDecimal) BigDecimal對象中的值相除,而後返回這個對象。
toString() 將BigDecimal對象的數值轉換成字符串。
doubleValue() 將BigDecimal對象中的值以雙精度數返回。
floatValue() 將BigDecimal對象中的值以單精度數返回。
longValue() 將BigDecimal對象中的值以長整數返回。
intValue() 將BigDecimal對象中的值以整數返回。web
4、格式化及例子
因爲NumberFormat類的format()方法可使用BigDecimal對象做爲其參數,能夠利用BigDecimal對超出16位有效數字的貨幣值,百分值,以及通常數值進行格式化控制。ide
以利用BigDecimal對貨幣和百分比格式化爲例。首先,建立BigDecimal對象,進行BigDecimal的算術運算後,分別創建對貨幣和百分比格式化的引用,最後利用BigDecimal對象做爲format()方法的參數,輸出其格式化的貨幣值和百分比。spa
public static void main(String[] args) { NumberFormat currency = NumberFormat.getCurrencyInstance(); //創建貨幣格式化引用 NumberFormat percent = NumberFormat.getPercentInstance(); //創建百分比格式化引用 percent.setMaximumFractionDigits(3); //百分比小數點最多3位 BigDecimal loanAmount = new BigDecimal("15000.48"); //貸款金額 BigDecimal interestRate = new BigDecimal("0.008"); //利率 BigDecimal interest = loanAmount.multiply(interestRate); //相乘 System.out.println("貸款金額:\t" + currency.format(loanAmount)); System.out.println("利率:\t" + percent.format(interestRate)); System.out.println("利息:\t" + currency.format(interest)); }
運行結果以下:rest
貸款金額: ¥15,000.48利率: 0.8%利息: ¥120.00
5、BigDecimal比較
BigDecimal是經過使用compareTo(BigDecimal)來比較的,具體比較狀況以下:code
public static void main(String[] args) { BigDecimal a = new BigDecimal("1"); BigDecimal b = new BigDecimal("2"); BigDecimal c = new BigDecimal("1"); int result1 = a.compareTo(b); int result2 = a.compareTo(c); int result3 = b.compareTo(a); System.out.println(result1); System.out.println(result2); System.out.println(result3); }
打印結果是:-一、0、1,即左邊比右邊數大,返回1,相等返回0,比右邊小返回-1。
注意不能使用equals方法來比較大小。orm