通常我們處理小數時,由於編程語言遵循的規范,目前絕大部分語言中的float類型都存在精度問題,
為了解決這類問題,通常會將小數先轉為整數,再進行計算,這一步已經能滿足大部分小數處理問題了。
但是,在遇到非常多位小數的情況下,比如0.000000000000000000000000018,這個時候按照上面的方案,轉成整數去進行計算,很容易溢出,go中uint64類型最大也只能有4003012203950112768。
好在go官方提供了math/big庫,該庫支持超大數和超大位小數的計算,保證精度。
還有一個第三方庫,shopspring/decimal,專用於處理小數計算的,該庫的實現方案也是類似的,將小數轉為整數,再調用math/big庫進行計算