정의 및 사용 방법
'부동소수점 숫자(Floating-point numbers)'란 소수점이 포함된 숫자나 지수 표기법(e 또는 E)을 사용하여 수를 나타내는 데이터 타입을 의미합니다.
왜 '부동소수점(Floating-point)'이라고 부를까요?
컴퓨터는 실수를 우리가 눈으로 보는 그대로 저장하지 않습니다. 효율적으로 저장하기 위해 정해진 규칙을 사용합니다. 예를 들어 정수는 컴퓨터에 저장될 때 소수점이 없습니다. 반면 소수점이 포함된 숫자는 컴퓨터에 저장될 때 정해진 규칙에 따라 소수점의 위치가 고정되지 않고 숫자에 따라 달라질 수 있습니다. 소수점의 위치가 둥둥 떠다니며 자리를 옮겨 간다는 의미에서 부동소수점 숫자(Floating-point numbers)라고 형상화해서 부릅니다. 지수 표기법(e 또는 E)도 지수에 따라 소수점의 위치가 달라지는 방식으로 숫자를 표현합니다.
PHP에서는 이 데이터 타입을 float이라고 하며, double 또는 real이라고도 합니다.
기본 예제
아래의 예제에 사용된 변수의 데이터 타입은 모두 부동소수점 숫자(float)입니다.
/* 소수점이 포함된 숫자 */
$a = 1.234;
$b = -1.234;
$c = 1.0;
$d = 0.1;
/* 지수 표기법(e 또는 E)을 사용한 숫자 */
$e = 1.5e3;
$f = 7E-10;
/* PHP 7.4.0부터 도입된
* 콤마(,) 대신 언더바(_)를 넣어 눈으로 자릿수를 쉽게 알아볼 수 있게 해주는 표기법
* 이 표기법에 소수점이 포함된 숫자
*/
$g = 1_234.567; // 1234.567과 동일
데이터 타입 확인
PHP에서는 내장 함수를 사용해 주어진 값의 데이터 타입이 부동소수점 숫자(float)인지 쉽게 확인할 수 있습니다.
관련 내장 함수는 다음과 같습니다.
var_dump()
|
변수의 타입과 값까지 출력합니다. |
|---|---|
gettype()
|
변수의 타입을 문자열로 반환합니다.
데이터 타입이 부동소수점 숫자( float)이면 "double"을 반환합니다. |
is_float()
|
주어진 값이 부동소수점 숫자(float) 타입인지 확인합니다.
부동소수점 숫자 타입이면 true를 반환하고, 그렇지 않으면 false를 반환합니다. |
다음의 예제 코드로 확인해 보세요.
$float_1 = 3.14;
var_dump($float_1); // float(3.14)
var_dump(gettype($float_1)); // string(6) "double"
var_dump(is_float($float_1)); // bool(true)
$float_2 = 1.5e3;
var_dump($float_2); // float(1500)
var_dump(gettype($float_2)); // string(6) "double"
var_dump(is_float($float_2)); // bool(true)
데이터 타입 변환
PHP에서는 변수의 데이터 타입을 직접 변환할 수 있는 여러 방법들을 제공합니다.
여기에서는 부동소수점 숫자(float)로 변환하는 방법을 알아봅니다.
타입 캐스팅(Type Casting, 형 변환)
타입 캐스팅은 변수의 데이터 타입을 명시적으로 변경하는 것을 의미합니다. 이를 위해 값이나 변수 앞에 변환하려는 데이터 타입을 괄호로 묶어 지정합니다.
$num = 100; // $num은 정수 타입
$float_casting = (float) $num;
var_dump($float_casting); // float(100)
이때, 타입 캐스팅은 변환된 값을 반환하며 원본 변수나 값은 변경되지 않습니다.
$num = 100; // $num은 정수 타입
$float_casting = (float) $num;
var_dump($float_casting); // float(100)
/* 원본 변수나 값은 변경되지 않습니다. */
var_dump($num); // int(100)
타입 캐스팅에 관한 자세한 설명은 PHP 타입 캐스팅 – 변수 앞에 원하는 타입을 괄호로 묶어 변환을 참고하세요!
settype() 함수 사용
settype() 함수는
인수로 전달된 값을 지정된 데이터 타입으로 설정합니다.
$num = 100; // $num은 정수 타입
settype($num, 'float');
var_dump($num); // float(100)
settype() 함수에 관한 자세한 설명은 PHP settype() 함수 – 변수를 지정된 데이터 타입으로 설정을 참고하세요!
floatval() 함수 사용
floatval() 함수는
인수로 전달된 값을 부동소수점 숫자(float)로 변환하여 반환합니다. 이때, 원본 변수나 값은 변경되지 않습니다.
$num = 100; // $num은 정수 타입
$float_value = floatval($num);
var_dump($float_value); // float(100)
var_dump($num); // int(100)
floatval() 함수에 관한 자세한 설명은 PHP floatval() 함수 – 값을 부동소수점 숫자로 변환하여 반환을 참고하세요!
데이터 타입 변환 시 주의할 점
다른 데이터 타입을 부동소수점 숫자(float) 타입으로 변환하는 방법을 알아봤습니다. 데이터 타입을 변환하는 이유는 다양하지만, 변환 전후의 데이터 타입이 달라져도 화면에 출력되는 값은 동일하게 보일 수 있다는 점을 기억해야 합니다.
$num = 100;
$float_num = (float) $num;
var_dump($num); // int(100)
var_dump($float_num); // float(100)
// 데이터 타입이 달라져도 화면에 출력되는 값은 동일하게 보일 수 있다는 점
echo $num; // 100
echo $float_num; // 100