mysql取余 和 取模_编程语言中,取余和取模的区别到底是什么?

本文介绍了编程语言中取模和求余的概念,通过实例解析了MySQL中mod()和rem()函数的使用。取模与求余的主要区别在于选取商的趋近方向:取模让商更接近负无穷,求余让商更接近0。文章还提到了取模在灰度方案和A/B测试中的应用。
摘要由CSDN通过智能技术生成

【取模和求余原理】

定义:a = bq + r 且 0 <= |r| < |b|。

题目:给定a和b,要求mod(a,b)和rem(a,b);

分析:对于满足a = bq + r 且 0 <= |r| < |b|条件的数据,如果a不能被b整除,有两对(q,r),其中一对中r为正数(正余数),另一对中r为负数(负余数)。

结果:取模的定义有很多种,不同语言的取模定义可能不一样,最常见的是:

取模:q更趋近无穷小(负无穷)时的r,即mod(a,b);

求余:q更趋近0时的r,即rem(a,b);

(取余,遵循尽可能让商向0靠近的原则;取模,遵循尽可能让商向负无穷靠近的原则;)

【举例】

例子1:mod(7,3)=1,rem(7,3)=1

候选组1:(q1,r1)=(2,1); 7=2*3+1

候选组2:(q2,r2)=(3,-2); 7=3*3+(-2)

取模:因为q1比q2更加趋近于负无穷,所以取(q1,r1)=(2,1),mod(7,3)=1;

求余:因为q1比q2更加趋近于0,所以取(q1,r1)=(2,1),rem(7,3)=1;

例子2:mod(7,-3)=-2,rem(7,-3)=1

候选组1:(q1,r1)=(-2,1); 7=(-2)*(-3)+1

候选组2:(q2,r2)=(-3,-2); 7=(-3)*(-3)+(-2)

取模:因为q2比q1更加趋近于负无穷,所以取(q2,r2)=(-3,-2),mod(7,-3)=-2;

求余:因为q1比q2更加趋近于0,所以取(q1,r1)=(-2,1),rem(7,3)=1;

例子3:mod(-7,3)=2,rem(-7,3)=-1

候选组1:(q1,r1)=(-2,-1);  -7=(-2)*3+(-1);

候选组2:(q2,r2)=(-3,2);   -7=(-3)*3+2;

取模:因为q2比q1更加趋近于负无穷,所以取(q2,r2)=(-3,2),mod(7,-3)=2;

求余:因为q1比q2更加趋近于0,所以取(q1,r1)=(-2,-1),rem(7,-3)=-1;

例子4:mod(-7,-3)=-1,rem(-7,-3)=-1

候选组1:(q1,r1)=(2,-1);  -7=2*(-3)+(-1)

候选组2:(q2,r2)=(3,2);  -7=3*(-3)+2

取模:因为q1比q2更加趋近于负无穷,所以取(q1,r1)=(2,-1),mod(7,-3)=-1

求余:因为q1比q2更加趋近于0,所以取(q1,r1)=(2,-1),rem(7,-3)=-1

【更多】1、其他的取模运算,例如r必须和a负号相同等等,原理类似,根据条件取模时对候选组进行选择,因此不再展开。2、取模在灰度方案和abtest中经常用到(对随机算法要求不高)。翻了下百度计算器,对了下答案,米问题,交卷~;

作者:小婷子

链接:https://www.zhihu.com/question/30526656/answer/160437482

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值