- ベストアンサー
整数かどうか判別できません。
やりたい事は小数点があるか無いかの判断です。 4100000000 の桁だと、is_intではfalseになってしまいます・・ 何か良いチェック方法はあるでしょうか? if(is_int(4100000000)) echo "整数です"; else echo "整数ではありません"; floor()では丸め誤差がでてしまい。小数点がある場合はfloor()を 使い、小数点がない場合、floor()を使わないようにしたいのです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。 んと…質問内容としては「signed intのサイズを超える整数値をきちんと整数として認識したい」という内容でよいでしょうか? だとすると答えは「PHPでは無理」です。 非常に残念ではあるのですが。signed intを超えるサイズの場合、PHPは、内部で自動的にfloatに型変換してしまうので。 何らかのロジックを、九分九厘自力で組む必要があります。 ちなみに。単純に「大きな整数を扱いたい」場合、例えばGMP(GNU Multiple Precision)なんてものならあります。
その他の回答 (1)
- gmataw
- ベストアンサー率50% (12/24)
回答No.2
> やりたい事は小数点があるか無いかの判断です。 > 4100000000 > の桁だと、is_intではfalseになってしまいます・・ <?php $num = 4100000000; echo preg_match("/^\d+\.\d+$/", $num) ? 'yes' : 'no'; ?> こうゆう事ではなくて?
質問者
お礼
やはりそうですか。ありがとうございます。 eregでやります。
お礼
大変明確なご説明ありがとうございます。 4.1で割り算をし、floor()すると、999999999とかになって しまうので、round()で逃げるかもしれません。 PHPのint制約に、十分に気をつけて対処しますね。