BigDecimal类

不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

概述:

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

不可变的、任意精度的有符号十进制数。

构造方法

  • public BigDecimal(String val):开发推荐使用这种构造方式或者使用valueOf(long val)

常用成员方法

  • public BigDecimal add(BigDecimal augend):加
  • public BigDecimal subtract(BigDecimal subtrahend):减
  • public BigDecimal multiply(BigDecimal multiplicand):乘
  • public BigDecimal divide(BigDecimal divisor):除
	public static void main(String[] args) {
		
		//开发不推荐使用BigDecimal(long val)
		BigDecimal bd1 = new BigDecimal(2.0).subtract(new BigDecimal(1.1));
		System.out.println(bd1);//0.899999999999999911182158029987476766109466552734375
		
		//开发推荐使用BigDecimal(String val)
		BigDecimal bd2 = new BigDecimal("2.0").subtract(new BigDecimal("1.1"));
		System.out.println(bd2);//0.9
		
		//开发推荐使用valueOf(long val),底层和BigDecimal(String val)是一样的
		BigDecimal bd3 = BigDecimal.valueOf(2.0).subtract(BigDecimal.valueOf(1.1));
		System.out.println(bd3);//0.9
		
	}

valueOf(long val)方法底层源码


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值