针对原版,改进版有两个地方变动
%s%v
package main
import (
"fmt"
"strconv"
"math"
)
// prec 代表小数位数
func TrunFloat(f float64, prec int) float64 {
x := math.Pow10(prec)
return math.Trunc(f*x) / x
}
func main() {
f := 2.0/3;
// 截断 8 位小数
f2 := TrunFloat(f, 16)
// 输出结果 0.6666666666666666
fmt.Printf("%v\n", f2)
// -1 参数表示保持原小数位数,千万要注意,如果你指定了位数就会四舍五入了
d2 := strconv.FormatFloat(f2,'f',-1,64)
// 输出结果 0.6666666666666666
fmt.Printf("%s\n", d2)
}