取模modulo 取余remainder
a对b取模、取余 定义为
先算商 c=a/b,取整数,其中取模向负无穷取整,取余向0取整
再算模数、余数 r=a-c*b
一、a,b同号 a mod b 与 a rem b结果一致
eg1. a=7,b=3 a/b=2.33 那么不论向负无穷还是向0取整 都是一个结果 2
所以 模数=余数=7-2*3=1
eg2. a=-7,b=-3 a/b=2.33 取模情况商取2,取余情况商取2
所以模数=-7-2*(-3)=-1 ; 余数 =-7-2*(-3)=-1
二、a,b异号 a mod b 与 a rem b结果不一致
eg1. a=7,b=-3 a/b=-2.33 取模情况商取-3,取余情况商取-2
所以模数=7-(-3)*(-3)=-2 ; 余数 =7-(-2)*(-3)=1
eg2. a=-7,b=3 a/b=-2.33 取模情况商取-3,取余情况商取-2
所以模数=-7-(-3)*(3)=2 ; 余数 =-7-(-2)*(3)=-1
此两例子看出a,b不同号时, 取余与a同号,取模与b同号
注意:Python下%为取模;
C语言 java %为取余(为什么很多人把这也叫做取模,弄得混淆!),
C的<cmath>下fmod(a,b)也是取余,为什么要用这个函数名字!模就是模,余就是余,标准库咋了,害我纠结这么久!
win10计算器mol也是取模