python 是怎么算出来的 -17%10=3?

 我来答
东城杨柳弄春柔
2018-10-10 · TA获得超过452个赞
知道答主
回答量:112
采纳率:0%
帮助的人:3.2万
展开全部
  1. 模运算的计算原理是这样的: 
    假设想求的a = x%y,a的值是通过如下公式算出来的: 
    a = x - (x/y)*y,且除法是按照整数除法来运算的 

    所以将你的数字代入公式: 
    -17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3. 

    产生这个结果的关键在于程序的取模公式,保证了 
    y是正数,模运算的结果就是[0,y), 
    y是负数,模运算的结果就是(y,0]

  2. 通常人们希望整除的商和余数会有这样的特性: 
    1. 被除数 = 除数*商 + 余数 
    2. 被除数符号变化,商的符号也变化,而绝对值不变 
    3. 余数的符号和除数相同 

    但实际上这 3 条不能总是符合的,第 1 条是肯定要符合的。 
    举例来说,3/2 为 1,3%2 为 1,如果要符合第 2 条,那就是 -3/2 为 -1,-3%2 为 -1,它是不符合第 3 条的;而如果要符合第 3 条,则是 -3%2 为 1,-3/2 为 -2,它是不符合第二条的。 

    所以一般编程语言会在第 2 或者 第 3 条中选择一条,python 选择的就是满足第 3 条的方式。很多其它的语言选择的是第 2 条。所以在 python 中,-17%10 为 3,而 -17/10 为 -2 

    注,在 python 3 中 / 表示除法,不表示整除,所以 -17/10 在 python 3 中为 -1.7,两个 / 才表示整除: -17//10 为 -2 

    这个问题在《C语言陷阱和缺陷》中有说明。

bearsword
推荐于2018-04-19
知道答主
回答量:37
采纳率:0%
帮助的人:44.6万
展开全部
模运算的计算原理是这样的:
假设想求的a = x%y,a的值是通过如下公式算出来的:
a = x - (x/y)*y,且除法是按照整数除法来运算的

所以将你的数字代入公式:
-17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3.

产生这个结果的关键在于程序的取模公式,保证了
y是正数,模运算的结果就是[0,y),
y是负数,模运算的结果就是(y,0]
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaisa1028
2012-07-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2573万
展开全部
余数嘛,-17除以10余3啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sdwffzlll
2012-07-17 · TA获得超过758个赞
知道小有建树答主
回答量:498
采纳率:85%
帮助的人:244万
展开全部
-17+10*2=3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李思远462
2021-08-11
知道答主
回答量:33
采纳率:0%
帮助的人:1.3万
展开全部
-20+3=-17
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式