java基础之BigDecimal类

由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal
BigDecimal类概述
不可变的、任意精度的有符号十进制数。
构造方法

public BigDecimal(String val)

问题的引出:在运算的过程中,float类型和double类型容易引起精度的丢失
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);

public BigDecimal(double val) 查看API的解释,说其有不可预知性。而字符串参数的是结果可预知的。
成员方法:

public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal divide(BigDecimal divisor)
BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)

package BigDecimal;

import java.math.BigDecimal;

public class demo {
	public static void main(String[] args) {
		
		BigDecimal bd1 = new BigDecimal("0.09");
		BigDecimal bd2 = new BigDecimal("0.01");
		System.out.println(bd1.add(bd2));

		BigDecimal bd3 = new BigDecimal("1.0");
		BigDecimal bd4 = new BigDecimal("0.32");
		System.out.println(bd3.subtract(bd4));

		BigDecimal bd5 = new BigDecimal("1.015");
		BigDecimal bd6 = new BigDecimal("100");
		System.out.println(bd5.multiply(bd6));

		BigDecimal bd7 = new BigDecimal("1.301");
		BigDecimal bd8 = new BigDecimal("100");
		System.out.println(bd7.divide(bd8));
		System.out.println(bd7.divide(bd8, 2,BigDecimal.ROUND_HALF_UP));

		
		
		
		
		
		
		
		
	}

}




原文地址:https://www.cnblogs.com/jatpeo/p/11767595.html