关于 math.fmod(y, x)和 y % x
1、y > 0 , x > 0:
math.fmod()返回浮点数,% 返回整数,当然其他时候这个区别也是有的,只是再y > 0 , x > 0时候这是唯一的区别。
输出:math.fmod(7, 5)= 2.0 7 % 5= 2
输出:math.fmod(3, 5)= 3.0 3 % 5= 3
2、y < 0, x > 0:
math.fmod()按照 (y的符号)math.fmod( |y| , x)
eg:3对5求余,得3,加上y = -3的符号,得math.fmod(-3, 5)= -3.0
% 是按照补码的方式求余数。在模5得情况下 -3的补码是 2, -7 按照补码表盘的方式想想,-7是不是走过一轮表盘(一轮表盘有5个,【因为模是5】),最后等价 -2,-2的补码是3,所以得 -7 % 5= 3。
math.fmod(-3, 5)= -3.0 -3 % 5= 2
math.fmod(-7, 5)= -2.0 -7 % 5= 3
3、y < 0, x < 0:
不看符号,和x, y 都是正数得情况下一样
math.fmod(-7, -5)= -2.0 -7 % -5= -2
math.fmod(-7, -8)= -7.0 -7 % -8= -7