有人可以解釋一下這里發生了什么嗎?-1 % 7 = 6 https://www.wolframalpha.com/input/?i=-1%257 ...但是echo (-1 % 7)."\n"; // prints -1 WRONGecho fmod(-1,7)."\n"; // prints -1 WRONG我還嘗試了 php.net 中的這些示例,它們都正確返回。echo (5 % 3)."\n"; // prints 2echo (5 % -3)."\n"; // prints 2echo (-5 % 3)."\n"; // prints -2echo (-5 % -3)."\n"; // prints -2PHP 給了我一個我無法解釋 -1%7 的結果。它沒有溢出 int 但我還是嘗試了fmod,但我仍然遇到同樣的問題(即看起來不是這個問題:php modulo return wrong result)
3 回答
偶然的你
TA貢獻1841條經驗 獲得超3個贊
如果你想在 PHP 中得到一個負數的真模,你必須做兩次余數運算,第二次在加上你正在做模數的數字之后,使運算的輸入為正:
$a = ((-1 % 7) + 7) % 7;
echo $a;
$a = ((4 % 7) + 7) % 7;
echo $a;
輸出
6
4
ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
所以,結果 -1 是一個正確的答案。這就是“負余數”。我不是數學專業,我不知道還有另一個有效的答案。我正在尋找非負余數(正常答案)。
原來我可以用gmp_mod它。 https://www.php.net/manual/en/function.gmp-mod.php
這幫助我走上正軌:https : //www.omniccalculator.com/math/modulo
- 3 回答
- 0 關注
- 261 瀏覽
添加回答
舉報
0/150
提交
取消
