go两数相除得到预期小数并保留相应位数
2023-12-26 16:47:38
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!