//針對超過整數範圍的運算(整數最大值:2147483647) BigInteger(String val)
####(二) 經常使用方法:java
//加 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提供了BigDecimal數組
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
咱們來帖一組說明ide
BigDecimal
public BigDecimal(double val)將double轉換爲BigDecimal ,這是double的二進制浮點值的精確十進制表示。函數
返回的BigDecimal是(10scale × val)是一個整數的最小值。學習
筆記:code
- 這個構造函數的結果可能有些不可預測。 能夠假設在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)方法。
參數orm
val - double值轉換爲 BigDecimal 。對象
異常ip
NumberFormatException - 若是 val 是無限或NaN。ci
構造方法:建議使用 → BigDecimal(String s)
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技術的公衆號:理想二旬不止