답변:
PHP에는 차이가 없습니다. float
, double
또는 real
동일한 데이터 유형입니다.
C 레벨에서는 모든 것이 double
.
실제 크기는 여전히 플랫폼에 따라 다릅니다.
자세한 내용은 설명서를 참조하십시오 :
http://www.php.net/manual/en/language.types.float.php
function some( float $num){}
사용할 때 치명적인 오류 some ()은 float, double의 인스턴스 여야합니다.some(17.23)
real
지금까지 PHP 에는 그러한 데이터 유형이 없음을 명확히 합니다.
is_real
함수가 있는데 with is an alias of is_float
...; )
PHP의 경우 동일합니다. http://www.php.net/manual/en/language.types.float.php :
부동 소수점 숫자 ( "floats", "doubles"또는 "real numbers"라고도 함)는 다음 구문 중 하나를 사용하여 지정할 수 있습니다. [...]
혼란스러운 부분은 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은 double, float 주어진 인스턴스 여야합니다."
function test(float $a) {
var_dump($a);
}
test(2.2111);
2.2111을 화면에 인쇄합니다.