【JavaSE_学习笔记】BigDecimal类与BigInteger类
BigDecimal类
对于浮点类型的数据,他们的存储和整数的存储是不一样的,是按照有效数字位来进行存储的,浮点类型的数据计算时容易损失精度,计算出的结果不准确,为此Java提供了BigDecimal类。
BigDecimal作用:来提供浮点类型数据的精确计算!可变的、任意精度的有符号十进制数
构造方法:
public BigDecimal(String val)
常用方法:
public BigDecimal add(BigDecimal augend):加
public BigDecimal subtract(BigDecimal subtrahend):减
public BigDecimal multiply(BigDecimal multiplicand):乘
public BigDecimal divide(BigDecimal divisor):除
public BigDecimal divide(BigDecimal divisor,int scale,int roundingMode)
参数1:商,参数2:保留几位小数,参数3:舍入的一种模式:ROUND_HALF_UP
举例:
package demotest_BigDecimal;
import java.math.BigDecimal;
public class Demo1 {
public static void main(String[] args) {
//创建BigDecimal对象
BigDecimal bd1 = new BigDecimal("0.01") ;
BigDecimal bd2 = new BigDecimal("0.09") ;
System.out.println("add:"+bd1.add(bd2));//add:0.10
BigDecimal bd3 = new BigDecimal("1.0") ;
BigDecimal bd4 = new BigDecimal("0.32") ;
System.out.println("sub:"+bd3.subtract(bd4));//sub:0.68
BigDecimal bd5 = new BigDecimal("1.501") ;
BigDecimal bd6 = new BigDecimal("100.0") ;
System.out.println("mul:"+bd5.multiply(bd6));//mul:150.1000
BigDecimal bd7 = new BigDecimal("1.301") ;
BigDecimal bd8 = new BigDecimal("100") ;
System.out.println("div:"+bd7.divide(bd8));//div:0.01301
System.out.println("div:"+bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//div:0.013
System.out.println("div:"+bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));//div:0.01301000
}
}
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数组,数组中的元素:商,余数
举例:
public class BigIntegerDemo2 {
public static void main(String[] args) {
//创建BigInteger对象
BigInteger bg1 = new BigInteger("100") ;
BigInteger bg2 = new BigInteger("50") ;
System.out.println("add:"+bg1.add(bg2));
System.out.println("sub:"+bg1.subtract(bg2));
System.out.println("mul:"+bg1.multiply(bg2));
System.out.println("div:"+bg1.divide(bg2));
BigInteger[] datas = bg1.divideAndRemainder(bg2) ;
System.out.println("datas[0]:"+datas[0]);//2
System.out.println("datas[1]:"+datas[1]);//0
}
}