为什么使用BigDecimal?

众所周知,计算机是二进制存储,所以我们对浮点数直接运算会导致精度丢失。
而我们在开发一些业务的时候往往需要和金钱打交道,在钱这个数据上,我们是不能出现任何差错的。
在Java.math包下
Jdk就为我们提供一个高精度的类(BigDecimal),用于数据计算不会导致精度丢失,但是也有一个缺点就是速度远远没有基本数据类型快。

BigDecimal 的一些常用方法

既然是一个类,对象类型,那就不能像使用基本数据类型那样直接进行 + - * / 。
我们只能通过调用他的方法进行计算

BigDecimal add(BigDecimal augend) //加法运算

BigDecimal subtract(BigDecimal subtrahend) //减法运算

BigDecimal multiply(BigDecimal multiplicand) //乘法运算

BigDecimal divide(BigDecimal divisor) //除法运算

一些细节问题(配合Jsp使用)

我在实际使用的时候发现直接调用ToString也会导致精度丢失,比如我的小数被舍弃了。
我的做法是先转换为Double 再转换回去

 public BigDecimal getTotalPrice() {

        totalPrice = BigDecimal.valueOf(totalPrice.doubleValue( ));

        return totalPrice;
    }

更多操作,请翻阅API

Comments


享受技术带来的乐趣。