【发布时间】:2011-04-08 15:48:10
【问题描述】:
考虑整数除法
a = bq + r
其中a、b、q、r分别为:被除数、除数、商和余数。特别是当 b = 0 时,没有唯一的 q 满足给定 a 的方程,因此在这种情况下商 q 应该是未定义的。
但是,这种情况下确实存在唯一的r,即r = a。在商和余数总是一起定义的前提下,只要 q 未定义,就会得出 r 未定义,但在编程中,我们经常希望使用余数运算%,而不考虑除法/。我实际上遇到了我想要if b == 0 then a else a % b end的情况。
在任何编程语言中是否存在/是否存在与 % 相同但在除数为 0 时返回除数而不是零除法错误的运算符?
大多数(或所有)编程语言对% 0返回零除法错误有什么原因吗?
【问题讨论】:
-
你知道,今天早些时候我想知道 Chuck Norris 是否可以取零的对数...
-
有趣的问题。 Scheme(或guile,无论如何)同时具有
remainder和modulo函数(当args 为负时,它们会有所不同,顺便说一句)。它们都在 0 上溢出。 -
“股息”应该是“股息”。另外,我认为您的意思是除数为0,而不是商。商是除法的结果,只要被除数小于除数(对于无符号数),商就为零。在这种情况下,余数将等于被除数。当除数为零时,商是未定义的,不清楚将未定义的数乘以零是否为零,因此余数也应该是未定义的。
-
现在你需要说没有唯一的 'q' 可以满足这个方程。
-
好吧,我说不清楚零乘以一个未定义的值。真正的论点是根据除法的定义,r 必须小于 b。
标签: integer division integer-division divide-by-zero