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.