PHPで任意の数字よりも大きな何かはありますか?
-
19-09-2019 - |
質問
私はPHPで∞をシミュレートする必要があります。
だからmin(∞,$number)
は常に$number
です。
正しい解決策はありません
他のヒント
私は整数のために、あなたは PHP_INT_MAX
に使用することができ、と仮定し、次のコード:
var_dump(PHP_INT_MAX);
私のマシン上で、この出力を提供します:
int 2147483647
しかし、あなたは注意する必要があります。参照整数オーバーフローのの(引用)の
は、PHPは、外の数を指定した場合 整数型の範囲、それがされます 代わりにfloatとして解釈されます。 また、動作をもたらします の範囲外の数 整数型はfloatを返します。 その代わります。
また、浮動小数点数のドキュメントページから:
フロートのサイズであります プラットフォームに依存する最大値が、 〜の精度で1.8e308 おおよそ14桁が一般的です 値(64ビットIEEEフォーマット)。
整数オーバーフローを考慮し、あなたのケースに応じて、値のこの種を使用すると良いかもしれない(?)ソリューション...
定数PHP_INT_MAX
を使用します。
あなたは潜在的に一定のPHP_INT_MAX
を使用することができます(PHPマニュアルドキュメントのためにクリックしてください)>。
しかし、あなたがそれを使用するかどうか、あなたは本当にの必要を考えてもよいでしょう - それは奇妙な要求のビットのように思える。
。INF
: PHPは、実際には「無限大」の定義済みの定数を有します。これは、の真の無限大ではありませんが、基本的に可能な最大の浮動小数点値です。 64ビット・システムでは、最大フロートはの略の1.8e308
に等しいので、これは無限大に等しいと考えられる。
$inf = INF;
var_dump(min($inf,PHP_INT_MAX)); // outputs int(9223372036854775807)
var_dump(min($inf,1.79e308)); // outputs float(1.79E+308)
var_dump(min($inf,1.799e308)); // outputs float(INF)
var_dump(min($inf,1.8e308)); // outputs float(INF)
var_dump($inf === 1.8e308); // outputs bool(true)
注、最大浮動小数点値よりも大きい値を有する任意の数INF
にキャストされます。したがって、私たちがしなければ、var_dump($inf === 1e50000);
、最大フロートがこれより少ない場合でも。この出力にもなりますtrue
私が思う、これは整数であると仮定すると、あなたはPHP_INT_MAX定数を使用することができます。
分($番号、$番号+ 1)^
$INF = 9**9E9;
これはあなたがIEEE浮動小数点数に格納できる任意の値よりも大きくなっています。そして、それは本当に意図したとおりに動作します:任意の非無限の数は少なくなります$INF
よります:
$N < $INF
任意の "正常な" 数の$N
に当てはまります。
たぶん、あまりにもPHPでそれを使用する?
min($number,$number)
は常に(もちろん$number
についても同様)max()
です。
[はい、あなたは、配列を(使用することができます)、それは任意の数の
、常に大きくなりますのように
echo min(array(), 9999999999999999);
または
if (array() > 9999999999999999) {
echo 'array won';
} else {
echo 'number won';
}