BigInteger:可以让超过Integer范围内的数据进行运算
构造方法:
BigInteger(String val)
1 import java.math.BigInteger; 2 public class BigIntegerDemo { 3 public static void main(String[] args) { 4 // 这几个测试,是为了简单超过int范围内,Integer就不能再表示,所以就更谈不上计算了。 5 // Integer i = new Integer(100); 6 // System.out.println(i); 7 // // System.out.println(Integer.MAX_VALUE); 8 // Integer ii = new Integer("2147483647"); 9 // System.out.println(ii); 10 // // NumberFormatException 这个字符已经超出了int的范围 11 // Integer iii = new Integer("2147483648"); 12 // System.out.println(iii); 13 14 // 通过大整数来创建对象 15 BigInteger bi = new BigInteger("2147483648"); 16 System.out.println("bi:" + bi); 17 } 18 }
由于在运算的时候,float类型和double很容易丢失精度,演示案例。
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
构造方法:
public BigDecimal(String val)
1、public BigDecimal add(BigDecimal augend) 加
2、public BigDecimal subtract(BigDecimal subtrahend) 减
3、public BigDecimal multiply(BigDecimal multiplicand) 乘
4、public BigDecimal divide(BigDecimal divisor) 除
5、public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):商,几位小数,如何舍取
divisor - 此 BigDecimal 要除以的值。
scale - 要返回的 BigDecimal 商的标度。
roundingMode - 要应用的舍入模式。
经常用ROUND_HALF_UP,向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式
1 import java.math.BigDecimal; 2 public class BigDecimalDemo { 3 public static void main(String[] args) { 4 //在运算的时候,float类型和double很容易丢失精度,演示案例。 5 // System.out.println(0.09 + 0.01); 0.09999999999999999 6 // System.out.println(1.0 - 0.32); 0.6799999999999999 7 // System.out.println(1.015 * 100); 101.49999999999999 8 // System.out.println(1.301 / 100); 0.013009999999999999 9 10 //为了能精确的表示、计算浮点数,Java提供了BigDecimal 11 BigDecimal bd1 = new BigDecimal("0.09"); 12 BigDecimal bd2 = new BigDecimal("0.01"); 13 System.out.println("add:" + bd1.add(bd2)); 14 System.out.println("-------------------"); 15 16 BigDecimal bd3 = new BigDecimal("1.0"); 17 BigDecimal bd4 = new BigDecimal("0.32"); 18 System.out.println("subtract:" + bd3.subtract(bd4)); 19 System.out.println("-------------------"); 20 21 BigDecimal bd5 = new BigDecimal("1.015"); 22 BigDecimal bd6 = new BigDecimal("100"); 23 System.out.println("multiply:" + bd5.multiply(bd6)); 24 System.out.println("-------------------"); 25 26 BigDecimal bd7 = new BigDecimal("1.301"); 27 BigDecimal bd8 = new BigDecimal("100"); 28 System.out.println("divide:" + bd7.divide(bd8));//divide:0.01301 29 System.out.println("divide:" 30 + bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//divide:0.013 31 System.out.println("divide:" 32 + bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP)); //divide:0.01301000 33 } 34 }