Golang 中国

float64保留小数点后3位怎么弄

6 回复
jimmykuu
#1 jimmykuu • 2014-07-21 20:24
fmt.Sprintf("%.3f", 1.23456)
David
#2 David • 2014-07-21 22:11

@jimmykuu 的代码是转成字符串的。如果你要的只是改变这个数自己,那是这样的:

value = math.Trunk(value*1e3 + 0.5)*1e-3

+0.5 是为了四舍五入,如果不希望这样去掉这个。

qq19116699
#3 qq19116699 • 2015-01-13 18:58

@David 我也遇到这个问题 当我用二楼的方法处理的时候 有可能会出现 小数点后面很多位 我修改了下

func Round(f float64, n int) float64 {
    pow10_n := math.Pow10(n)
    return math.Trunc((f+0.5/pow10_n)*pow10_n) / pow10_n
}
arthur
#4 arthur • 2016-05-18 16:48

@David 似乎是 Trunc

JackieHoo
#5 JackieHoo • 2018-05-11 19:41

思路 首先使用fmt.Sprintf 返回一个保留位数的string格式然后使用strconv改变string为float64即可


func Three(v float64) (float64, error) {
    return  strconv.ParseFloat(fmt.Sprintf("%.3f",v), 3)
}
xinyu391
#6 xinyu391 • 2018-05-26 21:53

如果float64*1000范围不超过int64.
可以简单这么处理

var  f64 float64
var i64 int64
i64 = int64(f64*1000)
f64 = i64/1000
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。