在金融领域,为了保证数据的精度,往往会使用BigDecimal。本文就来探讨下为什么BigDecimal可以保证精度不丢失。类介绍首先来看一下BigDecimal的类声明以及几个属性:public class BigDecimal extends Number implements Comparable { // 该BigDecimal的未缩放值 private final BigInteger intVal; // 精度,可以理解成小数点后的位数 private final int scale; // BigDecimal中的十进制位数,如果位数未知,则为0(备用信息) private transient int precision; // Used to store the canonical string representation, if computed. // 这个我理解就是存实际的BigDecimal值 private transient String stringCache; // 扩大成long型数值后的值 private final transient long intCompact;}从例子入手通过debug来发现源码中的奥秘是了解类运行机制很好的方式。请看下面的testBigDecimal
………………………………