Java BigDecimal类

BigDecimal概述

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

构造方法

public BigDecimal(String val)

成员方法

public BigDecimal add(BigDecimal augend)
public BigDecimal subtract(BigDecimal augend)
public BigDecimal multiply(BigDecimal augend)
public BigDecimal divide(BigDecimal augend)

案例演示

import java.math.BigDecimal;
public class test {

	public static void main(String[] args) {
	
		System.out.println(3.3-1.1);  //不精确
		
		BigDecimal b1=new BigDecimal(3.3);   //不推荐使用
		BigDecimal b2=new BigDecimal(1.1);
		System.out.println(b1.add(b2));     //+
		System.out.println(b1.subtract(b2));    //-
		System.out.println(b1.multiply(b2));   //*
		//System.out.println(b1.divide(b2));     //(除)		
		
		BigDecimal bi1=new BigDecimal("3.3");   //推荐使用
		BigDecimal bi2=new BigDecimal("1.1");
		System.out.println(bi1.add(bi2));     //+
		System.out.println(bi1.subtract(bi2));    //-
		System.out.println(bi1.multiply(bi2));   //*
		System.out.println(bi1.divide(bi2));     //(除)
		
		
		BigDecimal bd1=BigDecimal.valueOf(3.3);   //推荐使用
		BigDecimal bd2=BigDecimal.valueOf(1.1);
		System.out.println(bd1.add(bd2));     //+
		System.out.println(bd1.subtract(bd2));    //-
		System.out.println(bd1.multiply(bd2));   //*
		System.out.println(bd1.divide(bd2));     //(除)
		
	}
	
}

输出:
2.1999999999999997
4.399999999999999911182158029987476766109466552734375
2.199999999999999733546474089962430298328399658203125
3.63000000000000009769962616701375978006148237175607926542869434427540653587129781953990459442138671875
4.4
2.2
3.63
3
4.4
2.2
3.63
3


原文地址:https://www.cnblogs.com/bbn0111/p/7506830.html