string、float、int等基本格式转换可移步:转换
1,保留小数以fmt.Sprintf来实现,转为字符串后再以strconv.ParseFloat来转为浮点数。
2,先将要操作的数转换为浮点数再进行相除操作。
操作如下:
func main() {
var a int = 3
var b int = 7
fmt.Println(a / b) // 结果为0,不符合预期
num0, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", a/b), 64) // 保留2位小数
fmt.Println(num0) // 结果为0,不符合预期
num1, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(a)/float64(b)), 64) // 保留2位小数
fmt.Println(num1) // 0.43
num2, _ := strconv.ParseFloat(fmt.Sprintf("%.5f", float64(a)/float64(b)), 64) // 保留5位小数
fmt.Println(num2) // 0.42857
}
在a>b的情况下,a/b得到的结果是商,没有小数。
若只想得到商,也就是不要余数整除的结果,如20/6想得到结果3,那么可以写成%.0f来只得到整数。
不论a>b还是a<b,只有先转换为浮点数后再进行除操作才是带小数最准确的结果。