一、BigInteger类 点击此处返回总目录 二、BigInteger类的构造方法
三、BigInteger类的方法 四、BigDecimal类 五、BigDecimal类的构造方法 六、BigDecimal类的方法 一、BigInteger类 不可变的任意精度的整数。有时候数据可能超过long型,一旦超过long 型,基本 类型就不能表示了。对于这种超级大数,Java把他变成BigInteger的对象去做。大数的四则运算都是采用方法去完成的。 在java.math包中。 二、BigInteger的构造方法 1. public BigInteger(String val) //只需要看一个就行了。传递的字符串是数字格式,但是没有长度的限制。 例1:
package cn.itcast.demo07; import java.math.BigInteger; public class Test { public static void main(String[] args) { BigInteger b = new BigInteger("122334434567891274567890456123372627632351261756127"); System.out.println(b); //122334434567891274567890456123372627632351261756127。重写了toString()方法。 } } |
三、BigInteger的方法 1. public BigInteger add(BigInteger val) //加。 2. public BigInteger subtract(BigInteger val) //减。 3. public BigInteger multiply(BigInteger val) //乘。 4. public BigInteger divide(BigInteger val) //除。 例:
package cn.itcast.demo07; import java.math.BigInteger; public class Test { public static void main(String[] args) { BigInteger a = new BigInteger("1000000000000000000007"); BigInteger b = new BigInteger("10000000000000000008"); BigInteger bigAdd = a.add(b); System.out.println(bigAdd); //1010000000000000000015 BigInteger bigSub = a.subtract(b); System.out.println(bigSub); //989999999999999999999 BigInteger bigMulti = a.multiply(b); System.out.println(bigMulti); //10000000000000000008070000000000000000056 BigInteger bigDiv = a.divide(b); System.out.println(bigDiv); //99 } } |
四、BigDecimal类 浮点大数运算。如下面例1所示,得到的结果不精确。原因是,在计算机的二进制中,表示浮点数不精确。这种不精确会导致问题。 为了解决超级大型的浮点数据,并能提供高精度的浮点运算,java提供了BigDecimal类。 例1:
package cn.itcast.demo08; public class Test { public static void main(String[] args) { System.out.println(0.09 + 0.01); //0.09999999999999999 System.out.println(1.0 - 0.32); //0.6799999999999999 System.out.println(1.015 * 100); //101.49999999999999 System.out.println(1.301 / 100); //0.013009999999999999 } } |
五、BigDecimal的构造方法 1. public BigDecimal(String val) //建议使用这一个。既不会担心超过范围,又能精度表示一个数。 六、BigDecimal的方法 1. public BigDecimal add(BigDecimal augend) //加。【例1】 2. public BigDecimal subtract(BigDecimal subtrahend) //减。【例1】 3. public BigDecimal multiply(BigDecimal multiplicand) //乘。【例1】 4. public BigDecimal divide(BigDecimal divisor) //除。除的时候如果除不尽,会抛出异常,解决方法就是用"方法5"。【例2】 5. public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) //scale:保留几位小数;roundingMode:保留模式。 //保留模式,参见API文档,常用的有: // ROUND_UP:直接进位。 // ROUND_DOWN:直接舍去。 // ROUND_HALF_UP:四舍五入。 // ROUND_HALF_DOWN:>5进位,<=5舍去。【例3】 例1:加、减、乘
package cn.itcast.demo09; import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal a1 = new BigDecimal("0.09"); BigDecimal b1 = new BigDecimal("0.01"); BigDecimal c1 = a1.add(b1); System.out.println(c1); //0.10 BigDecimal a2 = new BigDecimal("1"); BigDecimal b2 = new BigDecimal("0.32"); BigDecimal c2 = a2.subtract(b2); System.out.println(c2); //0.68 BigDecimal a3 = new BigDecimal("1.015"); BigDecimal b3 = new BigDecimal("100"); BigDecimal c3 = a3.multiply(b3); System.out.println(c3); //101.500 } } |
例2:
package cn.itcast.demo09; import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal a1 = new BigDecimal("1.301"); BigDecimal b1 = new BigDecimal("100"); BigDecimal c1 = a1.divide(b1); System.out.println(c1); //0.01301 BigDecimal a2 = new BigDecimal("1.301"); BigDecimal b2 = new BigDecimal("101"); BigDecimal c2 = a2.divide(b2); System.out.println(c2); // java.lang.ArithmeticException。除不尽的时候报异常。 } } |
例3:
package cn.itcast.demo09; import java.math.BigDecimal; public class Test { public static void main(String[] args) { BigDecimal a1 = new BigDecimal("1.501"); BigDecimal b1 = new BigDecimal("100"); BigDecimal c1 = a1.divide(b1,2,BigDecimal.ROUND_HALF_UP); //保留两位有效数字,四舍五入。 System.out.println(c1); //0.01501->0.02 } } |
|