巧妙解決負數取模難題
許多程式語言都提供取模運算子(%),用於計算一個數除以另一個數的餘數。然而,當將此運算符應用於負數時,可能會出現意想不到的結果。
例如,在 C 或 Java 等語言中執行 -1 % 3 時,結果為 -1,而不是預期的 2。這是因為取模運算子通常會傳回除法運算的餘數,而對於負被除數,則該餘數可能為負。
為了克服這個問題並獲得期望的行為,可以實現一個自訂的 mod 函數:
<code class="language-c++">int mod(int x, int m) { return (x % m + m) % m; }</code>
使用此函數,以下計算結果符合預期:
输入 | 预期输出 | 函数输出 |
---|---|---|
-1 % 3 | 2 | mod(-1, 3) = 2 |
-2 % 3 | 1 | mod(-2, 3) = 1 |
-3 % 3 | 0 | mod(-3, 3) = 0 |
函數的工作原理是,它透過將初始取模運算獲得的任何負值加上模數來確保結果始終為正。
以上是使用負數模運算子時如何確保正結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!