當前位置:編程學習大全網 - 編程軟體 - python 是怎麽算出來的 -17%10=3?

python 是怎麽算出來的 -17%10=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]

通常人們希望整除的商和余數會有這樣的特性:?

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語言陷阱和缺陷》中有說明。

  • 上一篇:長春阿爾特科技有限公司怎麽樣?
  • 下一篇:“ FB”是什麽意思
  • copyright 2024編程學習大全網