BigDecimal類的常用方法
類BigDecimal
不可變的、任意精度的有符號十進制數。BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成。如果爲零或正數,則標度是小數點後的位數。如果爲負數,則將該數的非標度值乘以 10 的負 scale 次冪。因此,BigDecimal 表示的數值是 (unscaledValue × 10-scale)。
運算的時候,float類型和double類型(浮點類型),會丟失數據,不精確,大部分時候數據存儲和整數類型存儲不一致,屬於有效位數字不精確
java提供了一個類:BigDecimal
作用:不可變的、任意精度的有符號十進制數,讓運算更精確!
1. BigDeciaml構造方法
public BigDecimal(String val)
2. BigDecimal常用的方法
public BigDecimal add(BigDecimal augend)加
public BigDecimal subtract(BigDecimal subtrahend)減
public BigDecimal multiply(BigDecimal multiplicand)乘
public BigDecimal divide(BigDecimal divisor)除
public BigDecimal divide(BigDecimal divisor, int scale,int roundingMode)
divisor:商scale:有幾位小數roundingMode:以什麼樣的模式舍入,其標度爲指定標度。
public class BigDecimal的構造方法 {
public static void main(String[] args) {
BigDecimal a = new BigDecimal("0.09");
BigDecimal b = new BigDecimal("0.01");
System.out.println("a+b="+a.add(b));
System.out.println("——————————");
BigDecimal c = new BigDecimal("1.0");
BigDecimal d = new BigDecimal("0.32");
System.out.println("a-b="+c.subtract(d));
System.out.println("——————————");
BigDecimal e = new BigDecimal("1.015");
BigDecimal f = new BigDecimal("100");
System.out.println("e*f="+e.multiply(f));
System.out.println("——————————");
BigDecimal g = new BigDecimal("1.301");
BigDecimal h = new BigDecimal("100");
System.out.println("g/h="+g.divide(f));
System.out.println("——————————");
System.out.println("g/h 保留3位小數 以過半模式舍入"+g.divide(f, 3 , BigDecimal.ROUND_HALF_UP));
System.out.println("g/h 保留4位小數 以過半模式舍入"+g.divide(f, 4 , BigDecimal.ROUND_HALF_UP));
}
}