//針對超過整數範圍的運算(整數最大值:2147483647)
BigInteger(String val)
複製代碼
//加
public BigInteger add(BigInteger val) //減 public BigInteger subtract(BigInteger val) //乘 public BigInteger multiply(BigInteger val) //除 public BigInteger divide(BigInteger val) //返回商和餘數的數組 public BigInteger[] divideAndRemainder(BigInteger val) 複製代碼
import java.math.BigInteger;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger bi1 = new BigInteger("100");
BigInteger bi2 = new BigInteger("50");
BigInteger[] bis = bi1.divideAndRemainder(bi2);
System.out.println("商:" + bis[0]);
System.out.println("餘數:" + bis[1]);
}
}
//運行結果
商:2
餘數:0
複製代碼
因爲在運算的時候,float類型和double很容易丟失精度(下例爲演示),因此爲了能精確的表示、計算浮點數,Java提供了BigDecimaljava
public class BigDecimalDemo {
public static void main(String[] args) {
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.026 * 100);
System.out.println(1.502 / 100);
System.out.println(1.0 - 0.17);
}
}
//運行結果
0.09999999999999999
0.6799999999999999
102.60000000000001
0.01502
0.83
複製代碼
咱們來帖一組說明數組
BigDecimal
public BigDecimal(double val) 複製代碼
將double轉換爲BigDecimal ,這是double的二進制浮點值的精確十進制表示。bash
返回的BigDecimal是(10scale × val)是一個整數的最小值。ide
筆記:函數
- 這個構造函數的結果可能有些不可預測。 能夠假設在Java中寫入new BigDecimal(0.1)建立一個BigDecimal ,它徹底等於0.1(非標尺值爲1,比例爲1),但實際上等於0.1000000000000000055511151231257827021181583404541015625。 這是由於0.1不能像double (或者做爲任何有限長度的二進制分數)精確地表示。 所以,正在被傳遞給構造的值不是正好等於0.1,雖然表面上。
- 該String構造,在另外一方面,是徹底能夠預測的:寫new BigDecimal("0.1")建立BigDecimal這正好等於0.1,正如人們所指望的那樣。 所以, 一般建議使用String constructor優先於此。
- 當double必須用做源爲BigDecimal ,注意,此構造提供了一個精確的轉換; 它不會將double轉換爲String使用Double.toString(double)方法,而後使用BigDecimal(String)構造函數相同的結果。 要得到該結果,請使用static valueOf(double)方法。
參數學習
val - double值轉換爲 BigDecimal 。spa
異常code
NumberFormatException - 若是 val 是無限或NaN。orm
構造方法:建議使用 → BigDecimal(String s)cdn
import java.math.BigDecimal;
public class BigDecimalDemo2 {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("0.09");
BigDecimal bd2 = new BigDecimal("0.01");
System.out.println("加:" + bd1.add(bd2));
BigDecimal bd3 = new BigDecimal("1.0");
BigDecimal bd4 = new BigDecimal("0.32");
System.out.println("減:" + bd3.subtract(bd4));
BigDecimal bd5 = new BigDecimal("1.026");
BigDecimal bd6 = new BigDecimal("100");
System.out.println("乘:" + bd5.multiply(bd6));
BigDecimal bd7 = new BigDecimal("1.502");
BigDecimal bd8 = new BigDecimal("100");
System.out.println("除:" + bd7.divide(bd8));
}
}
//運行結果
加:0.10
減:0.68
乘:102.600
除:0.01502
複製代碼
若是內容中有什麼不足,或者錯誤的地方,歡迎你們給我留言提出意見, 蟹蟹你們 !^_^
若是能幫到你的話,那就來關注我吧!(系列文章均會在公衆號第一時間更新)
在這裏的咱們素不相識,卻都在爲了本身的夢而努力 ❤
一個堅持推送原創Java技術的公衆號:理想二旬不止