Bigdecimal解决double/float的精度丢失,使用Bigdecimal类创建BigDecimal实例时,一定用字符串作为构造器的参数,才不会发生精度损失,若使用duoble则依旧会存在精度损失
BigDecimal类源码?
public class BigDecimal extends Number implements Comparable<BigDecimal> {
private final BigInteger intVal;
private final int scale;
private transient int precision;
private transient String stringCache;
static final long INFLATED = Long.MIN_VALUE; private static final BigInteger INFLATED_BIGINT = BigInteger.valueOf(INFLATED);
private static final long serialVersionUID = 6108874887143696463L;
BigDecimal(BigInteger intVal, long val, int scale, int prec) { this.scale = scale; this.precision = prec; this.intCompact = val; this.intVal = intVal; }
public BigDecimal(char[] in, int offset, int len) { this(in,offset,len,MathCon