偶然遇到一個python取餘運算的問題,不是很理解,於是查找了一些文章進行分析
本文章參考 http://ceeji.net/blog/mod-in-real/ 進行實例分析
直接引用結論
1.對於任何同號的兩個整數,其取餘結果沒有爭議,所有語言的運算原則都是使商儘可能小。
2.對於異號的兩個整數,C++/Java語言的原則是使商儘可能大,很多新型語言和網頁計算器的原則是使商儘可能小
舉例:
分析驗證:
對於Python中,正負整數取餘運算:
若除數,被除數同號:
1) 99 % 7 分解操作 => 7 * 14 + 1 , 商爲 14 ,餘數爲 1
分解操作=> 7 * 15 +(-6),商爲 15,餘數爲 -6
由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 14 ,餘數爲 1
2)-99 % (-7) 分解操作 => -7* 14 +(-1),商爲 14,餘數爲 -1
分解操作 => -7*-15 + 6 ,商爲 15,餘數爲 6
由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 14 ,餘數爲 -1
若除數,被除數異號:
1) 99 % -7 分解操作 => -7 * (-14) + 1 , 商爲 -14 ,餘數爲 1
分解操作 => -7 * (-15) +(-6),商爲 -15,餘數爲 -6
由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 -15 ,餘數爲 -6
2)-99 % 7 分解操作 => 7*(-14)+(-1),商爲 -14,餘數爲 -1
分解操作 => 7*(-15)+(6),商爲 -15,餘數爲 6
由開頭的結論得知,python的計算原則是使商儘可能小,所以 取商 -15 ,餘數爲 6
以上驗證實驗輸出結果。