大家好啊,这次鸭血粉丝将和大家探讨一个计算机基础问题:关于浮点数带来的问题,以及如何精确地计算小数。
为什么会想到和大家讨论这个问题呢?
这还得从我公司的项目讲起。由于我是中途加入公司项目的,没有从零开始参与项目的构建。但在开发的过程中我发现在记录存款和消费金额等与钱有关的数据时项目中用到的都是BigDecimal类。
对于BigDecimal这个类我的印象中只知道它是一个小数工具类,可以完成很多与小数相关的计算。可是基本数据类型中明明已经有了float和double两个浮点数类型,为什么还要用BigDecimal呢?
带着疑惑,我一边探索,一边写下了这篇文章
浮点数带来的问题
假如你在面试,面试官看到你有和金融,银行相关的项目的经历,可能会问你记录存款和消费金额等与钱有关的数据时使用什么数据类型?
如果你能答上来BigDecimal等小数工具类的话,他可能会继续问你:为什么放着现成的float和double不用,要使用小数工具类呢?
这里就涉及到浮点数在计算机系统中存储的问题了。
我们可以通过自己熟悉的语言快速地重新浮点数计算不精确