小数切り捨てをmath.Floorで対応した内容を書いていたのですが
コメントをいただいて、math.Floorでは誤差が起きることを知りました。
それから調べたところ以下のパッケージで対応しているようです。
・math/big.Rat
・github.com/shopspring/decimal
今回はshopspring/decimalの方で試してみました。
小数第3切り捨て
hoge := decimal.NewFromFloat32(87.689)
hogemi := hoge.Truncate(2)
fmt.Println(hogemi)
小数第2切り捨て
hoge := decimal.NewFromFloat32(87.689)
hogemi := hoge.Truncate(1)
fmt.Println(hogemi)
以下にある、math.Floorの対応では誤差が出ます。
@Nabetani さんからいただいたコメント参照願います。
【誤差】小数第3切り捨て
hoge := 87.689
fmt.Println(math.Floor(hoge*100)/100)
【誤差】小数第2切り捨て
hoge := 87.689
fmt.Println(math.Floor(hoge*10)/10)
参照
https://yourbasic.org/golang/round-float-2-decimal-places/