编程语言中取模和取余的区别

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

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

如图所示:

在这里插入图片描述

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

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

7=3x2+1 或 7=3x3+(-2)。

因此,7rem3=1,7mod3=1。

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

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

7=(-3)x(-2)+1或7=(-3)x(-3)+(-2)。

因此,7rem(-3)=1,7mod(-3)=(-2).

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

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

当y≠0时:

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

取模:mod(x,y)=x-y.xfloor(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

参考连接:https://www.zhihu.com/question/30526656

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值