举例子简单易懂说明Java中取模和取余的区别

8 篇文章 0 订阅
本文解析了MATLAB中rem和mod函数的行为,强调了取余遵循商向0靠近,取模则向负无穷靠近的原则,并通过实例说明了在符号不同时如何处理冲突。通过分析取模和求余的定义,探讨了它们在实际应用中的选择依据。
摘要由CSDN通过智能技术生成

 

取余,遵循尽可能让商向0靠近的原则

取模,遵循尽可能让商向负无穷靠近的原则

符号相同时,两者不会冲突。

比如,7/3=2.3,产生了两个商2和3

7=3*2+1或7=3*3+(-2)。因此,7rem3=1,7mod3=1。

符号不同时,两者会产生冲突。

比如,7/(-3)=-2.3,产生了两个商-2和-3

7=(-3)*(-2)+1或7=(-3)*(-3)+(-2)。因此,7rem(-3)=1,7mod(-3)=(-2)

--------------------------------------------------------------------------------------------------------------------------

解释:为什么遵循的是这样的原则?

在matlab中,关于取余和取模是这么定义的:

当y≠0时:

取余:rem(x,y)=x-y.*fix(x./y)

取模:mod(x,y)=x-y.*floor(x./y)

其中,fix()函数是向0取整,floor()函数是向负无穷取整

以前边的运算为例:

7/(-3)=-2.3,在这个运算中,x为7,y为-3,分别调用fix()和floor()两个函数,得到结果是:

fix(-2.3)=-2

floor(-2.3)=-3

所以,rem(7,-3)=1,mod(7,-3)=-2

 

【取模和求余原理】

定义: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);

 

【举例】

例子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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wx: fulltilt8

文章原创,对你有用的话请打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值