微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在Ruby和Python中为-1 / 2 == -1?

如何解决为什么在Ruby和Python中为-1 / 2 == -1?

1/2实际上是两种语言所期望的0,因为它是整数除法。

人们也希望-1/2的结果也为0。但这是-1! 在其他语言(如Java,Scala或C ++)中,它应为0。 在Ruby和Python中会发生什么,为什么?

解决方法

这是为了保留(x / y) * y + (x % y) == x对所有整数xy != 0的身份;当x % y除以x时,y就是余数。

在Java中,整数除法四舍五入为零,但这意味着余数运算符%会给出负结果,这在大多数情况下都不方便。例如,当arr[i % arr.length]为负数时,表达式i不能保证有效的数组索引。

在Python中,如果y为正,则x % y总是给出非负结果(范围从0y - 1),因此要保留“剩余”属性,整数除法必须始终四舍五入,不一定要取整为零。

,

进行整数数学运算时,基本上会进行下限运算或四舍五入。 所以:

1/2 == 0.5 # rounds down to 0

但是

-1/2 == -0.5 # which rounds down to -1

如果您希望结果等于0,则可以运行以下命令:

int(-1/2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。