本篇要点简单描述浮点数十进制转二进制精度丢失的原因。产生误差不在于数的大小,而是因为数的精度。这个算法永远都不会无限循环,整数永远都可以使用二进制数精确表示,但小数呢?每次将小数部分乘2,取出整数部分,如果小数部分为0,就可以停止这个过程。这个算法有一定概率会存在无限循环,即无法用有限长度的二进制数表示十进制的小数,这就是精度丢失问题产生的原因。如何用BigDecimal解决double精度问题?我们已经明白为什么精度会存在丢失现象,那么我们就应该知道,当某个业务场景对double数据的精度要求非常高时,就必须采取某种手段来处理这个问题,这也是BigDecimal为什么会被广泛应用于金额支付场景中的原因啦。
暂无评论