[golang 除数计算问题]小整数除以大整数的问题

2019 年 3 月 28 日
 jojopro

golang 里面的除数计算很 bug

比如 A 为 5 , B 为 10

B/A = 2 这个很正常

但是 但是 但是

A/B = 0

正常来说 A/B 结果应该是 0.5

但是这种情况 golang 因为两个数都是 int 的原因,直接把小数去了,留下了意外的 0

嗯,抛砖引玉,请问各位有什么好的处理办法没?

比如在 golang 中,我非要用 5/10 得到结果 0.5

6854 次点击
所在节点    Go 编程语言
6 条回复
gamexg
2019 年 3 月 28 日
大部分语言下整数运算返回的都是整数,不包含小数部分。

看你的需求,转为浮点数除最简单,但是浮点数存在误差问题。
另外的选择是使用 decimal 类型,这个需要第三方库。
jojopro
2019 年 3 月 28 日
@gamexg 弱类型语言是支持这个的 比如 nodejs
如果我想用 golang 实现这样的效果 请问是否有具体方法呢 我刷搜索没找到 自己用代码尝试了下感觉挺恶心的
jojopro
2019 年 3 月 28 日
难道是提前把 5 和 10 定义成 float 类型 我试试
gamexg
2019 年 3 月 28 日
@jojopro #3

package main

import "fmt"

func main() {
fmt.Println(float64(5) / float64(10))
}
jojopro
2019 年 3 月 28 日
@gamexg 谢谢啊
reus
2019 年 3 月 28 日
所有整数运算都是这样的,建议补习基础知识

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/549564

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX