好的,那有什么用呢?
irb(main):001:0> 4/3
=> 1
irb(main):002:0> 7/8
=> 0
irb(main):003:0> 5/2
=> 2
我意识到Ruby在这里进行整数除法,但为什么呢?有了像Ruby一样灵活的语言,为什么不能5/2
返回5/2
的实际数学结果?我错过了整数除法的常见用法吗?在我看来,让7/8
返回0
会导致更多的混乱,而不是任何可能来自它的好处是值得的。 Ruby有没有真正的理由呢?
答案 0 :(得分:4)
因为创作中的大多数语言(甚至是高级/高级语言)都可以吗?您将在C,C ++,Java,Perl,Python中对整数执行相同的行为...这是Euclidian Division(因此相应的模%
运算符)。
整数除法运算甚至在许多架构上的硬件级别实现。 Others已经提出了这个问题,其中一个原因是symetry:在静态类型语言中,例如see,这允许所有整数运算返回整数,而不会损失精度。它还允许轻松访问相应的低级汇编程序操作,因为C被设计为一种扩展层。
此外,正如对链接文章的一篇评论中所解释的那样,浮点运算多年来代价高昂(或在所有架构上都不受支持),并且不需要诸如在固定批次中拆分数据集等流程。