float64
stringsstring
func Truncate(f float64, prec int) string { n := strconv.FormatFloat(f, 'f', -1, 64) if n == "" { return "" } if prec >= len(n) { return n } newn := strings.Split(n, ".") if len(newn) < 2 || prec >= len(newn[1]) { return n } return newn[0] + "." + newn[1][:prec] }
使用方式
package main import ( "strconv" "strings" ) func Truncate(f float64, prec int) string { n := strconv.FormatFloat(f, 'f', -1, 64) if n == "" { return "" } if prec >= len(n) { return n } newn := strings.Split(n, ".") if len(newn) < 2 || prec >= len(newn[1]) { return n } return newn[0] + "." + newn[1][:prec] } func main() { f := 1.0 / 3.0 println(Truncate(f,8)) }
不过还有另外一个版本,哈哈
package main import ( "strconv" "strings" ) func Truncate(f float64, prec int) string { n := strconv.FormatFloat(f, 'f', -1, 64) if n == "" { return "" } ll := len(n) if prec >= ll { return n } dotn := strings.Index(n, ".") if dotn <= -1 || prec + dotn >= ll { return n } return n[:dotn + prec + 1 ] } func main() { f := 33333330.1234567890 println(Truncate(f,8)) }