Ruby中的负数除法

Ruby中的负数除法,ruby,Ruby,有人能解释一下负数除法的结果吗 2.6.1 :001 > -25/24 => -2 2.6.1 :002 > 25/24 => 1 为什么它是-2而不是-1 关于怪异行为的更多示例: 2.6.1 :003 > 24/25 => 0 2.6.1 :004 > -24/25 => -1 有什么想法吗? 谢谢。Ruby中的整数除法返回下限或除法的浮点结果: 使用/执行除法,然后将结果转换为整数。Numeric不定义/运算符;这是留给

有人能解释一下负数除法的结果吗

2.6.1 :001 > -25/24
 => -2 
2.6.1 :002 > 25/24
 => 1 

为什么它是-2而不是-1

关于怪异行为的更多示例:

2.6.1 :003 > 24/25
 => 0 
2.6.1 :004 > -24/25
 => -1 
有什么想法吗?
谢谢。

Ruby中的整数除法返回下限或除法的浮点结果:

使用/执行除法,然后将结果转换为整数。Numeric不定义/运算符;这是留给子类的

等效于num.divmodnumeric[0]

并使用地板: :


Ruby中的整数除法返回下限或除法的浮点结果:

使用/执行除法,然后将结果转换为整数。Numeric不定义/运算符;这是留给子类的

等效于num.divmodnumeric[0]

并使用地板: :


考虑整数除法的一种方法是:

你做浮点除法。 你把结果四舍五入。 因此:

(25.0 / 24.0).floor  # => 1
(-25.0 / 24.0).floor # => -2

考虑整数除法的一种方法是:

你做浮点除法。 你把结果四舍五入。 因此:

(25.0 / 24.0).floor  # => 1
(-25.0 / 24.0).floor # => -2

我可以通过使用括号简单地找到所需的功能

-(25/24)
# => -1
也许,为什么-25/24让你感到惊讶:

对于浮点除法中的实际值,请提供-1.041


使用整数除法的结果将向下舍入到更负的值-2。这也称为楼层划分

我可以通过使用括号简单地找到所需的功能

-(25/24)
# => -1
也许,为什么-25/24让你感到惊讶:

对于浮点除法中的实际值,请提供-1.041


使用整数除法的结果将向下舍入到更负的值-2。这也称为Floor division

不同的编程语言对负整数除法使用不同的定义。Ruby使用了in,p。82.†

可以用一个例子来说明这一点:假设我们与周一起工作。我们的一周从星期天开始。数字是以零为基础的,因此我们从第0周第0天开始:

如果我们向前推进9天,我们将处于第1周第2天:

这些值由/和%返回:

如果我们从0向后移动9天,我们处于第2周第5天:

使用/和%:

†该页边距上有一个有趣的注释:

小心使用其他定义的计算机语言


不同的编程语言对负整数除法使用不同的定义。Ruby使用了in,p。82.†

可以用一个例子来说明这一点:假设我们与周一起工作。我们的一周从星期天开始。数字是以零为基础的,因此我们从第0周第0天开始:

如果我们向前推进9天,我们将处于第1周第2天:

这些值由/和%返回:

如果我们从0向后移动9天,我们处于第2周第5天:

使用/和%:

†该页边距上有一个有趣的注释:

小心使用其他定义的计算机语言



这是因为-1-1/24的地板等于-2。这是否意味着Ruby总是在整数除法的情况下调用引擎盖下的地板?那么-1-1/24是从哪里来的呢?下面是一个更详细的行为背后的解释:@TomLord-Wow,所以有一些类似的历史讨论,非常感谢!在使用Ruby 10年后,直到今天我才问自己:。这是因为-1-1/24的底等于-2。这是否意味着Ruby在整数除法的情况下总是调用引擎盖下的底?那么-1-1/24是从哪里来的呢?下面是一个更详细的行为背后的解释:@TomLord-Wow,所以有一些类似的历史讨论,非常感谢!在使用Ruby 10年后,直到今天我才问过自己:。我没有问过divmod方法,但是/。请看更新。我真的不清楚对/method的所有调用将使用floor。我没有问过divmod方法,但是/。请看更新。我真的不清楚对/method的所有调用将使用floor。Pheu,这只是增加了另一个问题:-25/24=>-2,但是-25/24=>-1@belgoros,好问题,我在python文档中找到了答案。请检查编辑后的答案。谢谢。所以我的建议是正确的,在每个部门的末尾打电话?我在Ruby文档中找不到任何答案。@belgoros,是的,这都是关于从地板到反面的:@belgoros,这都是关于优先级的,所以-25.0/24.0.floor就像-25.0/24.0.floor->-1Pheu,这只是增加了一个问题:-25/24=>-2,但是-25/24=>-1@belgoros,好问题,我在python文档中找到了答案。请检查编辑后的答案。谢谢。所以我的建议是正确的,在每个部门的末尾打电话?我在Ruby文档中找不到任何答案。@belgoros,是的,这都是关于从地板到反面的:@belgoros,这都是关于优先级的,所以-25.0/24.0.floor就像-25.0/24.0.floor->-1谢谢你这么详细的解释。顺便说一下,到资源的链接是b
roken.@belgoros它是指向维基百科的,修复了它:-这是具体的解释,谢谢!谢谢你这么详细的解释。顺便说一句,指向资源的链接已断开。@belgoros它是指向维基百科的,已修复:-这是具体的解释,谢谢!
----- 0 -----   ----- 1 -----
0 1 2 3 4 5 6   0 1 2 3 4 5 6
S M T W T F S   S M T W T F S
                    ^
9 / 7 #=> 1
9 % 7 #=> 2
---- -2 -----   ---- -1 -----   ----- 0 -----
0 1 2 3 4 5 6   0 1 2 3 4 5 6   0 1 2 3 4 5 6
S M T W T F S   S M T W T F S   S M T W T F S
          ^
-9 / 7 #=> -2
-9 % 7 #=> 5