1
請考慮這個片段(與How is 13 % 64= -13)爲什麼gmp_mod在不同的平臺上產生不同的結果?
if(extension_loaded('GMP')) {
printf("
PHP Version: %s
gmp_strval(gmp_mod('-13', '64')) = %s
gmp_strval(gmp_mod(-13, 64)) = %s
gmp_mod(-13, 64) = %s
",
phpversion(),
gmp_strval(gmp_mod('-13', '64')),
gmp_strval(gmp_mod(-13, 64)),
gmp_mod(-13, 64)
);
}
在我的Win7,這64位產生
PHP Version: 5.3.3
gmp_strval(gmp_mod('-13', '64')) = 51
gmp_strval(gmp_mod(-13, 64)) = -51
gmp_mod(-13, 64) = -51
這是奇怪的,因爲它http://codepad.viper-7.com/gqN5aa只產生51。
I could not find a bug for gmp_mod
on the PHP Bugtracker。但是,manual page也沒有暗示可能的不同結果。我不明白爲什麼它會產生不同的結果。
請運行上面的代碼片段並將輸出與您正在使用的操作系統和CPU架構一起發佈,以便確認它不僅僅是我的機器正在發揮作用。
此外,如果您知道這是一個已知問題還是預期的行爲,請將我指向錯誤跟蹤器中的鏈接。否則,我將用收集的結果打開一個錯誤。
謝謝!
P.S.請讓我知道我是否應該爲此請求CW。否則,我會把錯誤追蹤器的鏈接作爲答案(除非有人提出了一個令人信服的解釋)。
+1也讓我大吃一驚。不是CW – mario 2010-12-10 14:56:39