go两数相除得到预期小数并保留相应位数

发布时间:2023年12月26日

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,只有先转换为浮点数后再进行除操作才是带小数最准确的结果。

文章来源:https://blog.csdn.net/HYZX_9987/article/details/135152631
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。