php mod check

Modの確認処理

php における、-2 mod 12 の結果を確認します。計算結果の期待値は10です。

演算子 % による計算

-2 % 12 = -2

残念ながら期待通りの結果は得られませんでした。

自力計算

所望の結果が得られないので、下記により自力で計算します。
  -2 - function(-2 / 12) * 12
  function:実数を整数に変換する関数
実数を整数に変換する関数が2種類あるので、それぞれに計算結果を確認します。

(1) function=intvalの場合

-2 - intval(-2 / 12) * 12 = -2

(2) function=floorの場合

-2 - floor(-2 / 12)  * 12 = 10

他言語の結果

Ruby,python

-2 % 12 = 10

Javascript

剰余演算子 % の結果は次の通り。

-2 % 12 =

期待の結果が得られないので、次により計算します。整数化には Math.floor を使用します。

-2 - Math.floor(-2 / 12) * 12 = 10

Excel

(1) シート関数

Mod(-2 , 12) = 10

何と、期待する値が算出されました。

(2) VBA

Mod 関数がない。ワークシート関数も使用できない。Excelの全関数がVBAから使える訳ではないんですね。初めて気付きました。 仕方がないので、自力計算します。

-2 - int(-2 / 12) * 12 = 10

結局は、分子がマイナスの場合の剰余の算出をどうするかに帰する問題です。