gpt4 book ai didi

ruby - 为什么在另一个 Fixnum 上调用 Ruby 的 Fixnum#/method 时会向下舍入?

转载 作者:数据小太阳 更新时间:2023-10-29 08:39:40 26 4
gpt4 key购买 nike

好的,这是怎么回事?

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 这样做有什么真正的原因吗?

最佳答案

因为大多数语言(甚至高级/高级语言)在创建时都这样做?你将在 C、C++、Java、Perl、Python 中对整数有相同的行为......这是 Euclidian Division (因此有相应的模 % 运算符)。

整数除法运算甚至在许多架构的硬件级别实现。 Others已经问过这个问题,原因之一是对称性:在诸如 see 之类的静态类型语言中,这允许所有整数运算返回整数,而不会损失精度。它还允许轻松访问相应的低级汇编程序操作,因为 C 被设计为它之上的一种扩展层。

此外,正如对链接文章的一条评论中所解释的那样,多年来浮点运算的成本很高(或者并非所有架构都支持),并且不需要将数据集拆分成固定批处理等过程。

关于ruby - 为什么在另一个 Fixnum 上调用 Ruby 的 Fixnum#/method 时会向下舍入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641140/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com