PHP에서 float와 double의 차이점은 무엇입니까?


117

이 코드가 있습니다

$vad = 1.1;

print gettype($vad);

var_dump($vad);

그러면 다음이 출력됩니다.

double
float(1.1) 

그래서 그것은 PHP에서 double 또는 float입니까?

답변:


151

PHP에는 차이가 없습니다. float, double또는 real동일한 데이터 유형입니다.

C 레벨에서는 모든 것이 double.
실제 크기는 여전히 플랫폼에 따라 다릅니다.

자세한 내용은 설명서를 참조하십시오 :
http://www.php.net/manual/en/language.types.float.php


확실합니까? 그것에 대해 다른 메모리 사용이 있습니까?
TheCrazyProfessor

2
나는 그것을 function some( float $num){}사용할 때 치명적인 오류 some ()은 float, double의 인스턴스 여야합니다.some(17.23)
NaveenDA

1
@NaveenDA 어떤 버전의 PHP? PHP 7.0 이전에는 스칼라 유형 힌트를 사용할 수 없었으며 대신 클래스 이름으로 해석되었습니다. 거기에서 무슨 일이 벌어지고있는 것 같습니다.
Ken Wayne VanderLinde

real지금까지 PHP 에는 그러한 데이터 유형이 없음을 명확히 합니다.
Muhammad Sheraz

@MuhammadSheraz하지만 is_real함수가 있는데 with is an alias of is_float...; )
Macmade

21

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"이 반환 됨)


10

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".


4

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을 화면에 인쇄합니다.


8
float유효한 유형 힌트 만 있습니다 ( 참조 ). double대신 입력 하면 클래스 이름으로 처리되고 인터프리터는 double클래스 인스턴스가있는 변수를 예상하기 때문에 예외를 발생
시킵니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.