goland的float64四舍五入

penging · · 1066 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

找了很多关于go的四舍五入文章,发现没有这种类似的包,只能自己写一个了,也是看到别人的取巧方案,在这个基础上扩展的: ```go //四舍五入 func Round(x float64,digit int) (number float64,err error){ baseDigit := 10 if digit < 0 { return x,errors.New("错误的精度,不能小于0") }else{ baseDigit = pow(baseDigit,digit+1) } betweenNumber := float64(5) return (math.Floor((x * float64(baseDigit) + betweenNumber)/10))/float64(baseDigit/10),err } //获取需要的次方 func pow(x, n int) int { ret := 1 // 结果初始为0次方的值,整数0次方为1。如果是矩阵,则为单元矩阵。 for n != 0 { if n%2 != 0 { ret = ret * x } n /= 2 x = x * x } return ret } func main(){ x := 74.96 y := 20.48 z := x - y fmt.Println(z) //output: 54.47999999999999 roundMath,err = float.Round(z,2) fmt.Println(roundMath) //output: 54.48 fmt.Println(err) z = 0.6 fmt.Println(z + 0.7) //output: 1.2999999999999998 roundMath,err = float.Round(z+0.7,2)// 1.3 fmt.Println(roundMath) fmt.Println(err) } ``` 运行结果示意图: ![运行结果.png](https://static.studygolang.com/200910/787dff416bb96a46d907255c1c862081.png)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1066 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传