45、java常用类-BigDecimal

本文介绍Java中BigDecimal类的使用方法,包括构造方法和成员方法,如加减乘除等操作。通过实例对比float和double类型,展示BigDecimal如何解决浮点数运算时的精度丢失问题。
一、BigDecimal类概述及其构造方法

由于在运算的时候,float类型和double很容易丢失精度,演示案例。
所以,为了能精确的表示、计算浮点数,Java提供了BigDecimal

1、BigDecimal类概述
不可变的、任意精度的有符号十进制数。
2、构造方法
public BigDecimal(String val)
3、成员方法
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)

/*
 * 看程序写结果:结果和我们想的有一点点不一样,这是因为float类型的数据存储
 * 和整数不一样导致的。它们大部分的时候,都是带有有效数字位。
 * 
 * 由于在运算的时候,float类型和double很容易丢失精度,演示案例。所以,
 * 为了能精确的表示、计算浮点数,Java提供了BigDecimal
 * 
 * BigDecimal类:不可变的、任意精度的有符号十进制数,可以解决数据丢失问题。
 */
public class BigDecimalDemo {
	public static void main(String[] args) {
		System.out.println(0.09 + 0.01);//0.09999999999999999
		System.out.println(1.0 - 0.32);//0.6799999999999999
		System.out.println(1.015 * 100);//0.6799999999999999
		System.out.println(1.301 / 100);//0.013009999999999999

		System.out.println(1.0 - 0.12);//0.88
	}
}

public class BigDecimalDemo {
	public static void main(String[] args) {
		// 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);

		BigDecimal bd1 = new BigDecimal("0.09");
		BigDecimal bd2 = new BigDecimal("0.01");
		System.out.println("add:" + bd1.add(bd2));//add:0.10
		System.out.println("-------------------");

		BigDecimal bd3 = new BigDecimal("1.0");
		BigDecimal bd4 = new BigDecimal("0.32");
		System.out.println("subtract:" + bd3.subtract(bd4));//subtract:0.68
		System.out.println("-------------------");

		BigDecimal bd5 = new BigDecimal("1.015");
		BigDecimal bd6 = new BigDecimal("100");
		System.out.println("multiply:" + bd5.multiply(bd6));//multiply:101.500
		System.out.println("-------------------");

		BigDecimal bd7 = new BigDecimal("1.301");
		BigDecimal bd8 = new BigDecimal("100");
		System.out.println("divide:" + bd7.divide(bd8));//divide:0.01301
		System.out.println("divide:"
				+ bd7.divide(bd8, 3, BigDecimal.ROUND_HALF_UP));//divide:0.013
		System.out.println("divide:"
				+ bd7.divide(bd8, 8, BigDecimal.ROUND_HALF_UP));//divide:0.01301000
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值