今天看啥  ›  专栏  ›  IT大咖说

BigDecimal 为什么可以保证精度不丢失?

IT大咖说  · 公众号  · 科技自媒体  · 2024-05-06 20:00

主要观点总结

本文探讨了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 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览