通常我们处理小数时,由于编程语言遵循的规范,目前绝大部分语言中的float类型都存在精度问题,
为了解决这类问题,通常会将小数先转为整数,再进行计算,这一步已经能满足大部分小数处理问题了。
但是,在遇到非常多位小数的情况下,比如0.000000000000000000000000018,这个时候按照上面的方案,转成整数去进行计算,很容易溢出,go中uint64类型最大也只能有4003012203950112768。
好在go官方提供了math/big库,该库支持超大数和超大位小数的计算,保证精度。
还有一个第三方库,shopspring/decimal,专用于处理小数计算的,该库的实现方案也是类似的,将小数转为整数,再调用math/big库进行计算