要在Go中对浮点数进行四舍五入,你可以使用 函数,该函数来自内置的 math包中的函数。然而,这个函数四舍五入到最接近的整数,所以它不能直接用于将一个浮点数四舍五入到一个特定的精度。但是你可以用它来创建你自己的函数,四舍五入到任何小数位。你所需要做的就是
将要四舍五入的数字乘以10的幂数X ,其中X 是你要达到的精度。用函数将这个数字四舍五入到最接近的整数值。 函数用四舍五入的数字除以10,再除以X 的幂,其中X 是四舍五入的小数精度。
这样,通过将四舍五入的数字变成最接近的整数,然后进行除法,我们就可以得到一个四舍五入到指定小数位的数字。
例子
roundFloat() 是一个浮点舍入函数,工作方式如上所述。它的工作方式在例子中显示。
package main
import (
"fmt"
"math"
)
func roundFloat(val float64, precision uint) float64 {
ratio := math.Pow(10, float64(precision))
return math.Round(val*ratio) / ratio
}
func main() {
number := 12.3456789
fmt.Println(roundFloat(number, 2))
fmt.Println(roundFloat(number, 3))
fmt.Println(roundFloat(number, 4))
fmt.Println(roundFloat(number, 5))
number = -12.3456789
fmt.Println(roundFloat(number, 0))
fmt.Println(roundFloat(number, 1))
fmt.Println(roundFloat(number, 10))
}
输出
12.35
12.346
12.3457
12.34568
-12
-12.3
-12.3456789
将浮点数舍入到小数点后2位
将浮点数四舍五入到小数点后2位的完整例子。
package main
import (
"fmt"
"math"
)
func roundFloat(val float64, precision uint) float64 {
ratio := math.Pow(10, float64(precision))
return math.Round(val*ratio) / ratio
}
func main() {
number := 12.3456789
fmt.Println(roundFloat(number, 2))
}
输出
12.35
四舍五入到小数点后3位
四舍五入到小数点后3位的完整例子。
package main
import (
"fmt"
"math"
)
func roundFloat(val float64, precision uint) float64 {
ratio := math.Pow(10, float64(precision))
return math.Round(val*ratio) / ratio
}
func main() {
number := 12.3456789
fmt.Println(roundFloat(number, 3))
}
输出
12.346