一.BigDecimal类
对于浮点类型的数据类说,他们存储和整数的存储是不一致的,是按照有效数字位来进行存储的,浮点类型的数据计算的时候容易损失精度,计算出来的结果不精确,Java针对这种情况:提供了这个BigDecimal:
作用:来提供浮点类型数据的精确计算!可变的,任意精度的符号十进制数.
构造方法:
public BigDecimal(String val);
常用的成员方放:
public BigDecimal add(BigDecimal augend):加
public BigDecimal subtract(BigDecimal subtrahend):减
public BigDecimal multiply(BigDecimal multipliend):乘法
public BigDecimal divide(BigDecimal divisor):除
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode):参数1:商,参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP
相关代码:
import java.math.BigDecimal;
public class BigDecimalDemo {
public static void main(String[] args) {
BigDecimal b1=new BigDecimal("0.47");
BigDecimal b2=new BigDecimal("0.11");
//相加
System.out.println("add:"+b1.add(b2));
//相减
System.out.println("subtract:"+b1.subtract(b2));
//相乘
System.out.println("multiply:"+b1.multiply(b2));
//除
System.out.println("divide:"+b1.divide(b2, 4, BigDecimal.ROUND_HALF_UP));
}
}
结果为:add:0.58subtract:0.36
multiply:0.0517
divide:4.2727
二.BigInteger类
BigInteger:用来计算超出了Integer类型范围的数据.
构造方法:
public BigInteger(String val):将字符串表示的数字封装成BigInteger类型.
成员方法:
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):返回一个BigInteger数组,元素为:商和余数.
相关代码:
import java.math.BigInteger;
import java.util.Arrays;
public class BigIntegerDemo {
public static void main(String[] args) {
BigInteger b1=new BigInteger("20");
BigInteger b2=new BigInteger("10");
//加
System.out.println("add:"+b1.add(b2));
//减
System.out.println("subtract:"+b1.subtract(b2));
//乘
System.out.println("multiply:"+b1.multiply(b2));
//除
System.out.println("divide:"+b1.divide(b2));
BigInteger b3=new BigInteger("3");
System.out.println("divideAndRemainder:"+Arrays.toString(b1.divideAndRemainder(b3)));
}
}
结果为:add:30
subtract:10
multiply:200
divide:2
divideAndRemainder:[6, 2]