負の剰余

More than 3 years have passed since last update.

JavaScriptの剰余では、第1オペランドが正のときは正を、負のときは負を返します。

たとえば、

-5 % 2

の計算結果は-1になります。

これが自然だと思う人はそれでいいのですが、

僕はこれが気持ち悪いので、常に正を返すようにします。

function mod(i, j) {

return (i % j) < 0 ? (i % j) + 0 + (j < 0 ? -j : j) : (i % j + 0);
}

iが0のときはマイナスゼロが返ってくることがあり、それも気持ち悪いので

0を加算してマイナスゼロを避けています。

補足: このページによると、

Ruby, Phthon, Perlでは剰余結果が正になり、

C, Java, PHPでは剰余結果が負になるそうです。