目录
BigDecimal类
java.math.BigDecimal
一、作用
BigDecimal类是与数学计算相关的一个类,提供了一些数据计算的方法,比如加减乘除,求绝对值,正玄余玄正割余割等方法。
float、double两种浮点数类型运算是不够精确,不仅是java语言,很多编程语都有这样的问题。为了能够精确表示和计算浮点数,java提供了BigDecimal类。
二、构造方法
BigDecimal(String val)
将BigDecimal的字符串表示
BigDecimal
转换为BigDecimal
。
三、常用方法
1.
add(BigDecimal augend)
返回
BigDecimal
,其值是(this + augend)
,其标为max(this.scale(), augend.scale())
。2.
subtract(BigDecimal subtrahend)
返回
BigDecimal
,其值是(this - subtrahend)
,其标为max(this.scale(), subtrahend.scale())
。3.
multiply(BigDecimal multiplicand)
返回
BigDecimal
,其值是 (this × multiplicand),其标为(this.scale() + multiplicand.scale())
。4.
divide(BigDecimal divisor)
返回
BigDecimal
,其值为(this / divisor)
,优先级为(this.scale() - divisor.scale())
; 如果不能表示确切的商(因为它具有非终止的十进制扩展),则抛出一个ArithmeticException
。
public static void main(String[] args) {
double x = 0.1;
double y = 0.2;
// 先创建两个 BigDecimal对象,再调用方法求值
BigDecimal b1 = new BigDecimal(x+"");
BigDecimal b2 = new BigDecimal(y+"");
BigDecimal b3 = b1.add(b2);
double result1 = b3.doubleValue();
System.out.println(result1);
double result2 = b1.subtract(b2).doubleValue();
System.out.println(result2);
double result3 = b1.multiply(b2).doubleValue();
System.out.println(result3);
double result4 = b1.divide(b2).doubleValue();
System.out.println(result4);
}