• ベストアンサー

整数かどうか判別できません。

やりたい事は小数点があるか無いかの判断です。 4100000000 の桁だと、is_intではfalseになってしまいます・・ 何か良いチェック方法はあるでしょうか? if(is_int(4100000000)) echo "整数です"; else echo "整数ではありません"; floor()では丸め誤差がでてしまい。小数点がある場合はfloor()を 使い、小数点がない場合、floor()を使わないようにしたいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んと…質問内容としては「signed intのサイズを超える整数値をきちんと整数として認識したい」という内容でよいでしょうか? だとすると答えは「PHPでは無理」です。 非常に残念ではあるのですが。signed intを超えるサイズの場合、PHPは、内部で自動的にfloatに型変換してしまうので。 何らかのロジックを、九分九厘自力で組む必要があります。 ちなみに。単純に「大きな整数を扱いたい」場合、例えばGMP(GNU Multiple Precision)なんてものならあります。

php4
質問者

お礼

大変明確なご説明ありがとうございます。 4.1で割り算をし、floor()すると、999999999とかになって しまうので、round()で逃げるかもしれません。 PHPのint制約に、十分に気をつけて対処しますね。

その他の回答 (1)

  • gmataw
  • ベストアンサー率50% (12/24)
回答No.2

> やりたい事は小数点があるか無いかの判断です。 > 4100000000 > の桁だと、is_intではfalseになってしまいます・・ <?php $num = 4100000000; echo preg_match("/^\d+\.\d+$/", $num) ? 'yes' : 'no'; ?> こうゆう事ではなくて?

php4
質問者

お礼

やはりそうですか。ありがとうございます。 eregでやります。

関連するQ&A

専門家に質問してみよう