0

それは私の最初の質問なので、こんにちは..

この条件を満たすことは可能でしょうか?$a と $b は定義済みの変数です

if(!is_numeric($a * $b.'')) { ... }

編集:2番目の条件

$a * $b can't be INF
4

2 に答える 2

5

$aと の特定の値で条件を満たすことができます$b。たとえば、$a = $b = 1e200、または$a = 1e400, $b = 0.

と の積が無限$a$bオーバーフローするか非数である場合、空の文字列を連結すると文字列INForが生成されNANます。

php > var_export(1e200*1e200);
INF
php > var_export(is_numeric(1e200*1e200));
true
php > var_export(is_numeric(1e200*1e200.''));
false

php > var_export(1e400*0);
NAN
php > var_export(is_numeric(1e400*0));
true
php > var_export(is_numeric(1e400*0 .''));
false
于 2012-05-16T10:04:17.217 に答える
4

32 ビット PHP を使用してテスト済み

$a = 9.9E300;
$b = 9.9E300;

if(!is_numeric($a * $b.'')) {
    echo 'non-numeric';
} else {
    echo 'numeric';
}
于 2012-05-16T10:03:42.033 に答える