【发布时间】:2013-10-31 07:45:35
【问题描述】:
整数除法 -1 / 5 应该返回什么?我完全被这种行为搞糊涂了。我认为在数学上它应该是 0,但是 python 和 ruby 返回 -1。
为什么不同的语言在这里表现不同?请有人解释。谢谢。
| Language | Code | Result |
|-----------+----------------+--------|
| ruby | -1 / 5 | -1 |
| python | -1 / 5 | -1 |
| c | -1 / 5 | 0 |
| clojure | (int (/ -1 5)) | 0 |
| emacslisp | (/ -1 5) | 0 |
| bash | expr -1 / 5 | 0 |
【问题讨论】:
-
对不起,我的意思是 -1 而不是 1。我不知道答案,我感到很困惑。
-
没有答案。 “整数除法”不是一个定义明确的概念,每种语言的规范都可以选择向下取整或向 0 截断作为其定义的运算结果。
-
来吧,问题很明确:“整数除法 -1 / 5 应该返回什么?”这篇文章的其余部分只是这个问题的理由或动机。只需稍加解释,我就可以将问题理解为“为什么不同的语言在这里表现不同?”这是一个很好的问题。无需关闭此帖子。
-
@Wooble 这实际上是一个很好的答案。
-
各种语言都有many Questions about rounding and integer division,通常着眼于通过“向上取整”来克服“向下取整”行为。其中许多方法将有助于理解四舍五入对负数的作用。