我想簡單的操作爲什麼Elixir中的Rem操作符返回負數?
rem(-1, 25)
我期望這是整數除法的提醒,並返回24(同樣例如,如紅寶石),但它返回-1。 我做錯了什麼?這個行爲是否在靈藥上被打破?
我想簡單的操作爲什麼Elixir中的Rem操作符返回負數?
rem(-1, 25)
我期望這是整數除法的提醒,並返回24(同樣例如,如紅寶石),但它返回-1。 我做錯了什麼?這個行爲是否在靈藥上被打破?
其餘的符號實際上是根據編程語言改變的:https://en.wikipedia.org/wiki/Modulo_operation。所以兩者都是正確的,都是錯誤的。 :)
那麼在Elixir上添加一個模運算就像one @ simon-jez提到的那樣沒用嗎?模數運算在加密等數學相關工作中非常常見。 – Batou99
紅寶石:
irb > -1.remainder(25)
=> -1
藥劑:
iex(6)> rem(-1,25)
-1
他們的工作是相同的。
但我認爲你從紅寶石的意思模:
irb > -1.modulo(25)
=> 24
如果你需要表現得像這個話,我認爲你需要編寫自己的discussed here功能。
根據托馬斯·戴維斯在編程藥劑:
REM是餘數運算符。它被稱爲函數(rem(11,3)=> 2)。它與正常的模數運算不同,因爲結果的 符號與函數的第一個參數相同。
這意味着,你的情況,這是REM(-1,25),則結果 - 號,就像第一ARG。
這實際上是一個數學/定義問題 - 「餘數」沒有明確指定負數。 – MSalters
當輸入爲負值時,剩餘函數是否應提供正值或負值會有不同意見。兩種思想流派都是有效的,不幸的是跨語言沒有達成共識。 –