取余与取模
大多数的golang资料的含糊不清一个知识点
在go语言圣经中,是这样说的
算术运算符+、-、*和/可以适用于整数、浮点数和复数,但是取模运算符%仅用于整数间的运算。对于不同编程语言,%取模运算的行为可能并不相同。在Go语言中,%取模运算符的符号和被取模数的符号总是一致的,因此-5%3和-5%-3结果都是-2。除法运算符/的行为则依赖于操作数是否全为整数,比如5.0/4.0的结果是1.25,但是5/4的结果是1,因为整数除法会向着0方向截断余数。
在教程中%又被称作为取余运算,其实取余与取模之间是有很大的区别的
对于整数 a,b 来说,取模运算或者求余运算的方法要分如下两步: 1、求整数商:c=a/b 2、计算模或者余数:r=a-(c*b) 求模运算和求余运算在第一步不同
取余运算在计算商值向0方向舍弃小数位
取模运算在计算商值向负无穷方向舍弃小数位
例如:4/(-3) 约等于 -1.3
在取余运算时候商值向 0 方向舍弃小数位为 -1
在取模运算时商值向负无穷方向舍弃小数位为-2
所以
4rem(-3)=1 4mod(-3)=-2