"%"操作符始末---更新一
来源:互联网 发布:linux系统常用软件 编辑:程序博客网 时间:2024/06/10 03:49
发表此帖,谨是为了记录自己的学习历程,同时大家交流一下学习经验,本篇帖子稍后我也会发至我CSDN的博客里。 相信大家对%运算符早已不陌生了,很多同学会叫做取模(mod),但是与其说是取模,不如说取余更恰当一些,因为在大多数语言中,%运算是可以对负数进行操作的,故我认为叫做“取余”更恰当(我也是从其他大大出处接触的这个思想)。 大家最为熟悉的就是整数求余(a%b)就是指计算a中可以容纳多少个b,最后多出来的那部分就是余数,例如:9%4=1,此时,1就是余数,详细来说就是9%4=(4*2)+1,也就是9中最多容纳两个4,外加一个1,因此余数就是1。对于正整数求余实在是太简单了,所以大家都会。关键就在于对于负数的求余,这是很多同学会迷惑不解的。在看本帖子前,有些同学可能会怀疑负数是否能取余,或者对取余运算经常出错,那么看这个帖子就对了,一定让你以后不再出错。首先,我们根据正整数的取余可以得出一个结论,那就是:a=(b*times)+c,则c即为余数,也可改写为:c=a-(b*times),c同样是余数。得出这个结论当然也适用于负整数,当然对负数取余得到的也必定是负数,例如,-9%4=(4*(-2))+(-1),所以余数就是负1。认真的同学可能也会发现,即使把4换成了-4,结果也是一样。所以,又可以得到以下结论:a%b=a%(-b),也就是说%运算符后边的操作数为负数的话,可以将负号忽略掉,结果完全一样。 上边是整数的取余运算,那么问题来了,如果我想对实数取余呢,运算又是怎样的呢?的确,经过我的实践发现,对于不同的语言,对实数的取余操作的确不同。例如:在ruby和python的环境下,-9.1%2=0.90000000000000004,而对于苹果公司新推出的swift语言环境下,-9.1%2=-0.1,在ruby和python下-2.1%2=1.9,而在swift下-2.1%2=-0.1。看到这里是不是已经颠覆了你平常对于%运算的认识,当然,我也一样。 那么,在此处就要补充一点很重要的内容,相对于静态语言(例如:C\C++、Java等)和静态动态相结合的语言(如:swift)上边的预算是正确的,没有问题,但是对于动态语言(例如:ruby、python等)使用上述运算就不完全正确了。 经过实践,我发现当做取余运算时,ruby和pythong会有以下情况:
0 0
- "%"操作符始末---更新一
- “快乐宝宝”风波始末 (一)
- 更新glibc 2.3到glibc2.5的始末
- mongodb-更新操作符
- ios始末
- Mongodb更新操作$min操作符
- Beaglebone Black 串口的操作(一)(更新)
- 更新操作
- 有个程序猿要去当CEO了:(一)事情始末
- 有个程序猿要去当CEO了:(一)事情始末
- Mongodb数据更新命令、操作符
- Mongodb数据更新命令、操作符
- Mongodb数据更新命令、操作符
- RXJava 常用操作符整理(持续更新)
- Mongodb数据更新命令、操作符
- Mongodb数据更新命令、操作符
- Mongodb数据更新命令、操作符
- Mongodb更新数组操作$each修饰符
- android开发_获取android应用程序的相关信息并用ListView显示
- java四大作用域 的理解
- 随时记录
- Pushing to Git returning Error Code 403 fatal: HTTP request failed
- webstrom+nginx环境配置
- "%"操作符始末---更新一
- rails学习笔记: rake db
- Struts2 导出excel完整版
- python 读写cookie
- 观察者模式
- 85岁老画师相亲只聊"电影海报"引人瞩目
- nodejs开发聊天室 存几个博客ql
- Storm DRPC环境搭建笔记
- javescript基础2(变量/数组)