bigdecimal判断等于0_BigDecimal及常用方法

前段时间刚做的一个功能,做额度相关处理的时候用到了BigDecimal,整理如下:

首先我们为什么要用BigDecimal,float和double不香了么?

是的他不香。

可以自己尝试一下在控制台输出一些浮点数四则运算的结果:

4d41cc03f6e90bee9a3576a9925900a3.png

可以发现,在千万甚至亿万的小数级上会出现错误,并且只有浮点数会这样,为什么?

我们的计算机是二进制的,而浮点数没有办法用二进制精确表示,计算机中的浮点数由三部分组成:符号位S,指数部分E(称为阶码)和尾数部分M,这样会丢失一部分精度,有些运算也会产生一部分误差,所以,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。

BigDecimal由任意精度的整数非标度值 和32位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。因此,BigDecimal表示的数值是(

)。
  • 常用变量:

BigDecimal.ZERO:值0,标度0;

BigDecimal.ONE:值1,标度0;

BigDecimal.TEN:值10,标度0;

  • 常用构造方法:推荐用String参数的构造方法,因为精度是明确的

BigDecimal(int); // 创建一个具有参数所指定整数值的对象

BigDecimal(double); // 创建一个具有参数所指定双精度值的对象

BigDecimal(long); // 创建一个具有参数所指定长整数值的对象

BigDecimal(String); // 创建一个具有参数所指定以字符串表示的数值的对象

  • 四则运算:BigDecimal所创建的是对象,所以我们不能使用传统的+、-、*、/ 等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。
BigDecimal 
  • 其他运算相关方法
// 比较大小
  • 类型转换方法
// 将BigDecimal对象中的值转换成字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值