func Decimal(value float64) float64 {
return math.Trunc(value*1e2+0.5) * 1e-2
}
加上 0.5是为了四舍五入,想保留几位小数的话把2改掉即可。
这个版本有个关于浮点型数精度的问题,经常会出现 13.0000000001类似的结果。
下面的是先通过Sprintf保留两位小数,再转成float64.
func Decimal(value float64) float64 {
value, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", value), 64)
return value
}