考虑整数除法
a = bq + r
其中a,b,q,r分别为:被除数,除数,商和余数。特别是当b = 0时,没有唯一的q满足给定a的等式,因此在这种情况下,商q应该是未定义的。
然而,在这种情况下确实存在唯一的r,即r = a。在商和余数总是一起定义的前提下,每当q未定义时,r都没有被定义,但是在编程中,我们经常想要使用余数运算%
而不考虑除{{1} }}。我实际上遇到了我想要/
的情况。
是否存在任何编程语言中的运算符,使其与if b == 0 then a else a % b end
相同但在除数为0时返回除数而不是零除错误?
大多数(或所有)编程语言是否有理由为%
返回零分割错误?
答案 0 :(得分:2)
在数学上,余数在0和b-1之间,其中b是除数。因此,当b = 0时,r是未定义的,因为它必须是> = 0。
答案 1 :(得分:2)
是否有任何编程语言可以返回红利?不确定。我从未遇到任何人。
是否有理由认为大多数人不会退还股息? 是即可。模数是CS中的常见操作,因为它是CPU上整数除法的副产品。大多数(如果不是全部)汇编语言都具有模运算,并且此运算使用与除法运算完全相同的硬件。因此,如果你不能在硬件中除以零,那么你就不能在硬件中做零模数。
这是否意味着您不能拥有支持此功能的语言?不是真的,但你必须在一个通常是单个指令的操作中添加一个if语句。这可能会导致相当大的性能损失,因此很少(如果有的话)这样做。