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))
}