• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

负数求余数C和Matlab&Python处理不一样

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在百度看到这个问题:http://zhidao.baidu.com/question/937487369300959012.html?oldq=1

用matlab和Python测试了下,发现都是这样:

和一开始的想法一致:

负数取余 在原数加上或者减去 整数个 -3 使得结果落在 -2~0之间。

比如: 1%-3 1 + 1*(-3) = -2 余数是 -2
7%-3 7 + 3*(-3) = -2 余数是 -2
    -4%-3 -4 -1*(-3)= -1 余数是 -1

答完之后发现自己和别人的不一样,自己又用C语言跑了一下发现还真不一样~

百度了下,发现是这么回事:http://zhidao.baidu.com/link?url=YwqRxcU3bGqes74d22wT06MDc1qIQmq4hm91RLnRDkfDVECX1WI0jjqDET5U-7aOcr4noy4bB9bcliQlKg-smdLxDjX6ev_HwMES28nxs27

引用:
对负数的取模运算,C99规定:如果第一操作数为负,则得到的模为负;如果第一操作数为正,则得到的模为正。也就是说这是C的规定。真正的答案不用C的话,就用算术来计算是不是5%-3=-2.95,而在C语言当中就是为第一操作数的正整数,也就是2了。我比较关心,要是我用C来计算这样的问题,那么得出的结果和真正的结果不一样了,只不过是C的结果,遇到这样的问题我应该怎么写这段代码,得到真正的结果。麻烦你了。


-----------------------------------------------------------------------------------------
那岂不是。。。。

C99这样规定没问题么?那算出来的值与通常意义上的数学定义岂不是有点出入~ To do...........................!

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Rust备忘录 - 容器数据结构发布时间:2022-07-22
下一篇:
超33000行新代码,为Linux内核添加Rust支持的补丁已准备就绪发布时间:2022-07-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap