V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jojopro
V2EX  ›  Go 编程语言

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

  •  
  •   jojopro · 2019-03-28 15:43:34 +08:00 · 6166 次点击
    这是一个创建于 2100 天前的主题,其中的信息可能已经有所发展或是发生改变。

    golang 里面的除数计算很 bug

    比如 A 为 5 , B 为 10

    B/A = 2 这个很正常

    但是 但是 但是

    A/B = 0

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

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

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

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

    gamexg
        1
    gamexg  
       2019-03-28 15:59:06 +08:00 via Android
    大部分语言下整数运算返回的都是整数,不包含小数部分。

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

    package main

    import "fmt"

    func main() {
    fmt.Println(float64(5) / float64(10))
    }
    jojopro
        5
    jojopro  
    OP
       2019-03-28 21:48:23 +08:00
    @gamexg 谢谢啊
    reus
        6
    reus  
       2019-03-28 23:49:10 +08:00
    所有整数运算都是这样的,建议补习基础知识
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:43 · PVG 01:43 · LAX 09:43 · JFK 12:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.