Ruby中负数除法结果疑问:为何-25/24等于-2而非-1?
关于Ruby 2.6.1整数负数除法结果的解释
嘿,这个问题的核心其实是Ruby里整数除法的取整规则——Ruby的整数除法是向负无穷方向取整,而不是我们直觉里的“向零取整”,我给你逐个拆解你的例子:
先明确核心规则
Ruby中,两个整数做除法时,会把计算结果向负无穷方向取整(也就是取比当前计算结果更小的那个整数),而不是简单截断小数部分向零靠拢。
逐个分析你的示例
25/24 => 1:25除以24的结果是1.041...,向负无穷取整的话,最接近的更小整数就是1,这个和我们的直觉一致。-25/24 => -2:-25除以24的结果是-1.041...,向负无穷取整的话,比-1.041...更小的整数是-2(毕竟负无穷方向的数值是越来越小的,-2 < -1),所以结果是-2而非你预期的-1。24/25 => 0:24除以25是0.96,向负无穷取整的话,更小的整数就是0,这个结果也很好理解。-24/25 => -1:-24除以25是-0.96,向负无穷取整的话,比-0.96更小的整数是-1,所以最终结果是-1。
额外小技巧:如果想要向零取整的结果
如果你需要的是截断小数部分向零取整的效果,可以先把数值转成浮点数计算,再转回整数:
(-25.0 / 24).to_i # => -1 (-24.0 / 25).to_i # => 0
内容的提问来源于stack exchange,提问作者belgoros
相关产品推荐
相关产品推荐

