質問

いつも大変お世話になっております。
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件)

%が処理できる範囲 -2147483648~2147483647 を超えているからです。
これを超えるとこの範囲内に丸められてしまいます。

print 2147483647 % 7;
結果 1

print 2147483648 % 7;
結果 -2

この回答へのお礼

ありがとうございます。
全く持って勉強不足でした。
ご指摘頂き誠にありがとうございます。
大変勉強になりました!

単純にintegerの範囲を超えています。integerの範囲は-2147483645~2147483645です。

この回答へのお礼

ありがとうございます!
なるほどー。そんな規制があったんですね。
早速ネットで調べて、integerの範囲を超える場合は、
bcmod関数を使用するとの事で、早速試してみたらばっちりうまくいきました!
本当に助かります。ありがとうございました!

このQ&Aは役に立ちましたか?3 件

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

新しく質問する

注目の記事

おしトピアプリ登場記念!コメントで最大1万円分のギフト券があたる!

話題のトピックにさくっとコメントできる「おしトピ」にAndroid版アプリに続きiPhoneアプリも登場! どちらかのアプリをダウンロードして指定のオーダーにコメントした方に抽選で最大1万分のアマゾンギフト券をプレゼント! フジテレビ出身のフリーアナウンサー長谷川豊氏の質問にも回答受付中!


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ