부동소수점 수는 실수를 표현하는 방식으로 다음과 같이 표현될 수 있습니다.
<?php
$float0 = 3.14; // 3.14
$float1 = 3.14e3; // 3140
$float2 = 3.14E-3; // 0.00314
?>
e3(또는 E3)은 10의 3제곱인 1000을 곱하는 것을 의미하고, e-3(또는 E-3)은 10의 -3제곱 즉, 10의 3제곱 분의 1을 곱하는 것을 의미합니다.
다른 자료 형에서 부동소수점 수로의 명시적 형 변환을 위한 캐스트 연산자는 (float) 이며 대소문자의 구별은 하지 않습니다.
<?php
$a = 0.1 / 0.3;
printf("%.20e\r\n", $a); // 결과를 소수점 이하 20자리까지 출력
?>
[출력 결과]
3.33333333333333370341e-1
위 출력 결과에서 볼 수 있듯이 소수점 이하 15자리 밑으로는 값이 정확하지 않습니다. 이러한 한계점 때문에 부동소수점 수의 직접적인 비교 연산은 사용하지 않는 것이 좋습니다.
<?php
$float0 = acos(2);
if($float0 == $float0)
echo "True\r\n"; // if문 결과: FALSE
else
echo "$float0\r\n";
?>
[출력 결과]
NAN
<?php
$float0 = 1.8E+309;
echo "$float0";
?>
[출력 결과]
INF