对于 -1/2 而言,其实是有很多种答案的,比如 -1 = 2*0 - 1, -1 = 2*-1 + 1。
在数学上,余数指整数除法中被除数未被除尽部分,且余数的取值范围为0到除数之间(不包括除数)的整数。商在数学运算中是与除数相乘后,最大的不超过被除数的数。
因此,从数学意义上, -1/2 商应该是-1, 余数应该是+1的。
但是,在C/C++里面,商是向0方向取最接近的整数,余数可以是负数。所以,编程语言里面,-1/2 商应该是 0 , 余数应该是 -1的。
C++的%是数学上的取余,商向0取整。而取模是商向负无穷取整。
取余
rem(-3,-2) 余数是 -1 商是 1
rem(3,-2) 余数是 1 商是 -1
rem(-3,2) 余数是 -1 商是 -1
取模
mod(-3,-2) 模是 -1 商是 1
mod(3,-2) 模是 -1 商是 -2
mod(-3,2) 模是 1 商是 -2
当除数与被除数的符号不相同时,模与余数的结果不同,C++/JAVA/C里面都是取余数,python是取模。 具体说,rem结果的符号与被除数相同;mod结果的符号与除数相同。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/36175.html