回答:
PHPに違いはありません。float、doubleまたはreal同じデータ型です。
Cレベルでは、すべてがとして格納されますdouble。
実際のサイズは依然としてプラットフォームに依存しています。
詳細についてはマニュアルを参照してください:http :
//www.php.net/manual/en/language.types.float.php
function some( float $num){}、使用するsome(17.23)と致命的なエラーがスローされます some()は浮動小数点数のインスタンスでなければなりません。二重指定されています
realこれまでのところ、PHPにはそのようなデータ型がないことを明確にするだけです。
is_real、is_float...のエイリアスである関数があります。)
PHPの場合も同じです。http://www.php.net/manual/en/language.types.float.php:
浮動小数点数(「float」、「double」、または「実数」とも呼ばれます)は、次の構文のいずれかを使用して指定できます:[...]
紛らわしいのは、gettype(とにかく使用すべきではない)が「float」ではなく「double」を返す理由です。答えはhttp://de2.php.net/manual/en/function.gettype.phpです:
"double"(歴史的な理由から、単に "float"ではなく、floatの場合は "double"が返されます)
Windows上のPHP 7.0.6以降、このコマンドを xdebug なしで比較します。
$ php -r 'var_dump(28.4);'
float(28.4)
そして、で xdebugの:
$ php -r 'var_dump(28.4);'
Command line code:1:
double(28.4)
これはvar_dump()の出力のみを変更し、実際のメモリ管理は変更しないことに注意してください。
これは、他の一部のマシンのvar_dumpに表示されるdouble代わりにfloat表示されるいくつかの懸念に対処する場合があります。
また、xdebugの有無にgettypeかかわらず、引き続きを返しますstring(6) "double"。
PHP 7.0.14
function test(double $a) {
var_dump($a);
}
test(2.2111);
「致命的エラー:キャッチされないTypeError:test()に渡される引数1は、floatが指定されたdoubleのインスタンスでなければなりません」を返します。
function test(float $a) {
var_dump($a);
}
test(2.2111);
2.2111を画面に出力します。