java中long型为最大整数类型,对于超过long型的数据如何去表示呢.在Java的世界中,超过long型的整数已经不能被称为整数了,它们被封装成BigInteger对象.在BigInteger类中,实现四则运算都是方法来实现,并非采用运算符.java
BigInteger类的构造方法:ide
BigInteger b = new BigInteger(str);大数据
构造方法中,采用字符串的形式给出整数spa
四则运算代码:对象
public static void main(String[] args) {ip
//大数据封装为BigInteger对象ci
BigInteger big1 = new BigInteger("12345678909876543210");字符串
BigInteger big2 = new BigInteger("98765432101234567890");class
//add实现加法运算循环
BigInteger bigAdd = big1.add(big2);
//subtract实现减法运算
BigInteger bigSub = big1.subtract(big2);
//multiply实现乘法运算
BigInteger bigMul = big1.multiply(big2);
//divide实现除法运算
BigInteger bigDiv = big2.divide(big1);
}
在程序中执行下列代码,会出现什么问题?
System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);
double和float类型在运算中很容易丢失精度,形成数据的不许确性,Java提供咱们BigDecimal类能够实现浮点数据的高精度运算
构造方法以下:
BigDecimal b = new BigDecimal(str);
建议浮点数据以字符串形式给出,由于参数结果是能够预知的
实现加法减法乘法代码以下:(运算方法与BigInteger一致)
public static void main(String[] args) {
//大数据封装为BigDecimal对象
BigDecimal big1 = new BigDecimal("0.09");
BigDecimal big2 = new BigDecimal("0.01");
//add实现加法运算
BigDecimal bigAdd = big1.add(big2);
BigDecimal big3 = new BigDecimal("1.0");
BigDecimal big4 = new BigDecimal("0.32");
//subtract实现减法运算
BigDecimal bigSub = big3.subtract(big4);
BigDecimal big5 = new BigDecimal("1.105");
BigDecimal big6 = new BigDecimal("100");
//multiply实现乘法运算
BigDecimal bigMul = big5.multiply(big6);
对于浮点数据的除法运算,和整数不一样,可能出现无限不循环小数,所以须要对所须要的位数进行保留和选择舍入模式
BigDecimal b = big1.divide(big2,保留小数点后面几位,舍入模式)
// BigDecimal b = big1.divide.(big2,2,BigDecimal.ROUND_DOWN)