- ベストアンサー
PHPで余りを求めるには
いつも大変お世話になっております。 PHPで余りを求めたいのですが、うまく計算できません。 下記の数字を『%』で余りを求めてみました。 12069097343 と 79811665258 を数字で計算します。 手計算だと、 12069097343は余りが2、 79811665258が余りが3 のはずなのですが、プログラムで計算すると全く狂います。 print 12069097343%7; print 79811665258%7; と表示させると、両方とも『-3』を表示します。 なぜマイナス表記で、数字も違っているのかわかりません。 上記数字を変数に格納してから計算してみました。 $number1 = "12069097343"; $number2 = "79811665258"; print $number1%7; print $number2%7; すると、今度は両方とも『1』を表示しました。 何が問題なのかさっぱりわかりません。 何卒、ご教授の程、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単純にintegerの範囲を超えています。integerの範囲は-2147483645~2147483645です。
その他の回答 (1)
- shirayukix
- ベストアンサー率43% (90/207)
回答No.2
%が処理できる範囲 -2147483648~2147483647 を超えているからです。 これを超えるとこの範囲内に丸められてしまいます。 print 2147483647 % 7; 結果 1 print 2147483648 % 7; 結果 -2
質問者
お礼
ありがとうございます。 全く持って勉強不足でした。 ご指摘頂き誠にありがとうございます。 大変勉強になりました!
お礼
ありがとうございます! なるほどー。そんな規制があったんですね。 早速ネットで調べて、integerの範囲を超える場合は、 bcmod関数を使用するとの事で、早速試してみたらばっちりうまくいきました! 本当に助かります。ありがとうございました!