PHPの変数の型について教えてください
1.浮動小数点数の最大値はいくらですか? 、doubleとfloatは同じですか?
2. 値がオーバーフローしたことを確認するにはどうすればよいですか?
3. == を使用して 2 つの数値文字列を比較する場合、それらはすでに比較対象の 2 つの数値とみなされますか?
-----解決策---------
1. Range
float double の範囲は、指数の桁数によって決まります。
Float には 8 ビットの指数ビットがあり、double には 11 ビットの指数ビットがあります。 分布は次のとおりです:
float:
1 ビット (符号ビット) 8 ビット (指数ビット) 23 ビット (仮数ビット)
double :
1 ビット (符号ビット) 11 ビット (指数ビット) 52 ビット (仮数ビット)
したがって、float の指数範囲は -127 ~ +128、double の指数範囲は -1023 ~ +1024 となり、指数ビット 補数の形式に応じて分割されます。
このうち、負の指数は浮動小数点数が表現できる最小の絶対値を持つ非ゼロの数値を決定し、正の指数は浮動小数点数が表現できる最大の絶対値を持つ数値を決定します。これにより、浮動小数点数の値の範囲も決まります。
float の範囲は -2^128 ~ +2^128、つまり -3.40E+38 ~ +3.40E+38、double の範囲は -2^1024 ~ +2^1024、つまり - 1.79E+308~+1.79E+308。
2. 精度
float と double の精度は仮数の桁数によって決まります。浮動小数点数は科学的表記法に従ってメモリに格納され、その整数部分は常に暗黙的に「1」のままであるため、精度に影響を与えることはありません。
float: 2^23 = 8388608、合計 7 桁。つまり、有効数字は 7 桁までですが、6 桁であることが絶対に保証されています。つまり、float の精度は 6 ~ 7 です。有効数字;
Double: 2^52 = 4503599627370496、合計 16 桁 同様に、double の精度は 15 ~ 16 桁です。
------解決策------------------
マニュアルの次の 2 ページ (コメントを含む) がすべての質問に答えます:
http://www.php.net/manual/en/ language.types.float.php
http://www.php。 net/manual/en/ language.operators.comparison.php