通常我们处理小数时,由于编程语言遵循的规范,目前绝大部分语言中的float类型都存在精度问题,

为了解决这类问题,通常会将小数先转为整数,再进行计算,这一步已经能满足大部分小数处理问题了。

 

但是,在遇到非常多位小数的情况下,比如0.000000000000000000000000018,这个时候按照上面的方案,转成整数去进行计算,很容易溢出,go中uint64类型最大也只能有4003012203950112768。

 

好在go官方提供了math/big库,该库支持超大数和超大位小数的计算,保证精度。

 

还有一个第三方库,shopspring/decimal,专用于处理小数计算的,该库的实现方案也是类似的,将小数转为整数,再调用math/big库进行计算

posted on 2022-02-18 11:57  Boom__Clap  阅读(836)  评论(0编辑  收藏  举报