主要观点总结
本文探讨了Java中BigDecimal类为何能保证金融数据精度不丢失。文章首先介绍了BigDecimal的类结构,然后通过实例分析了其运行机制。
关键观点总结
关键观点1: BigDecimal类结构介绍
文章介绍了BigDecimal的类声明及几个关键属性,如intVal、scale、precision等。
关键观点2: 通过实例分析BigDecimal运行机制
文章通过一个具体的testBigDecimal方法,详细展示了BigDecimal在计算时如何将数值扩大1 0的n次倍,变成一个long型整数进行计算,从而确保精度不丢失。
关键观点3: 结论
文章得出结论,BigDecimal通过扩大数值和结合精度scale,实现了精度不丢失的计算。同时提醒读者在使用BigDecimal时需要注意的一些事项。
文章预览
在金融领域,为了保证数据的精度,往往会使用BigDecimal。本文就来探讨下为什么BigDecimal可以保证精度不丢失。 ◆ 类介绍 首先来看一下BigDecimal的类声明以及几个属性: public class BigDecimal extends Number implements Comparable < BigDecimal > { // 该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来发现源码中的奥秘是了解类运行机制很好的方式。请看下面的testBigD
………………………………