Golang 的数学库提供了一个Round函数。但是,它将 float64 舍入为 int,这意味着小数会丢失。
解决此问题的快速解决方法是将数字乘以您要保存的小数位数,然后舍入,然后再次将其划分回来:
raw := 4.335
rounded := math.Round(raw * 10) / 10
Run Code Online (Sandbox Code Playgroud)
会给你想要的结果。
您可能想要创建一个小辅助函数来舍入保存任意数量的数字:
func roundTo(n float64, decimals uint32) float64 {
return math.Round(n*math.Pow(10, float64(decimals))) / math.Pow(10, float64(decimals))
}
Run Code Online (Sandbox Code Playgroud)
用法:
roundTo(4.2655, 1) // 4.3
roundTo(4.3454, 3) // 4.345
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4600 次 |
| 最近记录: |