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

2019-03-28 15:43:34 +08:00
 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

6135 次点击
所在节点    Go 编程语言
6 条回复
gamexg
2019-03-28 15:59:06 +08:00
大部分语言下整数运算返回的都是整数,不包含小数部分。

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

package main

import "fmt"

func main() {
fmt.Println(float64(5) / float64(10))
}
jojopro
2019-03-28 21:48:23 +08:00
@gamexg 谢谢啊
reus
2019-03-28 23:49:10 +08:00
所有整数运算都是这样的,建议补习基础知识

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

https://www.v2ex.com/t/549564

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

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

© 2021 V2EX