python 是怎么算出来的 -1710=3?

模运算的计算原理是这样的: 假设想求的a = x%y,a的值是通过如下公式算出来的: a = x - (x/y)*y,且除法是按照整数除法来运算的 所以将你的数字代入公式: -17%10 = -17 - (-17/10)*10 = -17 - (-2)*10 = 3. 产生这个结果的关键在于程序的取模公式,保证了 y是正数,模运算的结...
python 是怎么算出来的 -1710=3?
模运算的计算原理是这样的:
假设想求的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]2012-07-17
模运算的计算原理是这样的: 假设想求的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]
通常人们希望整除的商和余数会有这样的特性: 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语言陷阱和缺陷》中有说明。
2018-10-10
余数嘛,-17除以10余3啊2012-07-18
-17+10*2=32012-07-17
通常人们希望整除的商和余数会有这样的特性:
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语言陷阱和缺陷》中有说明。2012-07-18
-20+3=-172021-08-11
mengvlog 阅读 6 次 更新于 2025-07-19 11:39:53 我来答关注问题0
檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部