실수형


실수는 정수의 개념보다 한단계 더 큰 수학적 개념입니다. 실수는 정수와 달리 소수점을 포함하여 큰 수의 값을 표현할 수 있습니다. 또는 지수로 표기된 실수 값을 말합니다.

실수 데이터


실수는 정수와 달리 데이터를 표현하는데 있어서 변수의 bit를 모두 숫자로 표현을 하지 않습니다. 숫자 부분과 지수를 표현하는 부분으로 나누어 처리합니다.

또한 실수는 컴퓨터의 표현의 제한으로 큰 수의 경우 숫자의 정밀도는 제한적일 수 있습니다. 큰 수를 사용하기 위해서 별도의 알고리즘이 필요로 합니다. PHP는 IEEE 754 형식을 따라 부동 소수점을 표현합니다.

IEEE 754는 1.11e-16의 반올림으로 인해 최대 상대 오차가 발생할 수 있습니다. 기본이 아닌 산술 연산은 더 큰 오류가 발생할 수 있습니다. 물론 여러 작업이 혼합 될 때 오류를 고려해야 연산을 해야 합니다.

또한 기수 10의 부동 소수점 숫자로 정확하게 표현할 수 있는 유리수 (예 : 0.1 또는 0.7)는 가수의 크기에 관계없이 내부적으로 사용되는 2 진수의 부동 소수점 숫자와 정확히 일치하지 않습니다.

따라서 정밀도를 잃지 않고 내부 바이너리로 변환 할 수 없습니다. 예를 들어 floor ((0.1 + 0.7) * 10)는 내부 표현이 7.999999999999911181과 같기 때문에 일반적으로 예상되는 8 대신 7을 반환합니다.

실수는 시스템 환경에 따라 표현을 할 수 있는 수는 차이가 있습니다. 64bit 환경에서 최대 표현 값은 ~1.8e308 입니다.


실수 변수


실수 변수는 $변수에 실수 값을 대입하는 것으로 쉽게 저장을 할 수 있습니다.

|문법|

$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;

다음 예제는 실수변수를 화면에 출력하는 예제 입니다.

예제 파일 float-01.php

<?php
	$x = 10.365;
	var_dump($x);
?> 

결과화면

float(10.365) 

다은 예제는 각도의 라디안 값 계산하는 실수형 예제 입니다.

예제 파일 float-02.php

<?php
	const PI = 3.14;

	$deg = 30;
	$rad = $deg * PI / 180.0;
	printf("DEG = %d, RAD = %f", $deg, $rad);
?>

결과화면

DEG = 30, RAD = 0.523333


실수 확인


PHP는 생성한 변수가 실수변수를 확인할 수 있는 is_float()이라는 내부함수를 제공합니다.

|관련함수|

bool is_float ( mixed $var )

매개변수값으로 변수를 전달하면 변수의 오브젝트 타입 여부를 논리값 형태로 반환합니다.

예제 파일 float-03.php

<?php
var_dump( is_float(27.25) );
var_dump( is_float('abc') );
var_dump( is_float(23) );
var_dump( is_float(23.5) );
var_dump( is_float(1e7) );  //Scientific Notation
var_dump( is_float(true) );
?> 

결과

bool(true)
bool(false)
bool(false)
bool(true)
bool(true)
bool(false)

위의 예제는 나열된 데이터들이 실수형 데이터 타입인지를 확인하는 예입니다.


실수 형변환


PHP에서는 변수에 실수 값을 저장할 때 변수의 타입은 실수형이 됩니다.

형변환이라는 것은 변수에 값을 입력할 때 값 앞에 변수의 형태를 미리 지정하여 저장하는 방법입니다.

예제 파일 float-04.php

<?php
	// 실수값을 입력하면 변수는 실수 입니다.
	$pi = 3.14;
	var_dump( $pi );
	echo "pi = $pi<br>";

	// 정수로 형변환 합니다.
	$a = (int)5.14;
	var_dump( $a );
	echo "a = $a<br>";

	// 더블형으로 형변환 합니다.
	$b = (double)3.14;
	var_dump( $b );
	echo "b = $b<br>";

	// 문자열로 형현환 합니다.
	$b = (string)3.14;
	var_dump( $b );
	echo "b = $b<br>";
?> 

결과

float(3.14) pi = 3.14
int(5) a = 5
float(3.14) b = 3.14
string(4) "3.14" b = 3.14

위의 예제는 형변환을 실험하는 예입니다. 형변환을 키워드를 이용하여 데이터의 값의 형을 바꿀 수 있습니다.


소수점 처리


실수형 수는 소수점을 포함하고 있습니다. 소수점이 있을 경우 버림, 올림, 반올림 내장 함수를 통해 계산할 수 있습니다.

|관련함수| 소수점 이하 올림

float ceil ( 실수값 )

ceil() 함수는 입력된 실수값의 소수점 이하를 올림 처리한 값을 반환합니다.

|관련함수| 소수점 이하 버림

mixed floor ( 실수값 )

floor() 함수는 입력된 실수값의 소수점 이하를 버림 처리한 값을 반환합니다.

|관련함수| 소수점 이하 반올림

float round (실수값, 자릿수)

round() 함수는 입력된 실수값의 이하 반올림 처리한 값을 반환합니다.

예제 파일 float-05.php

<?php
	// 올림
	echo ceil(4.3);    // 5
	echo ceil(9.999);  // 10
	echo ceil(-3.14);  // -3

	// 버림
	echo floor(4.3)."<br>";   // 4
	echo floor(9.999)."<br>"; // 9
	echo floor(-3.14)."<br>"; // -4

	// 반올림 처리
	echo round(3.4)."<br>";         // 3
	echo round(3.5)."<br>";         // 4
	echo round(3.6)."<br>";         // 4
	echo round(3.6, 0)."<br>";      // 4

	// 소수점 자리 반올림
	echo round(1.95583, 2)."<br>";  // 1.96
	echo round(5.045, 2)."<br>";    // 5.05
	echo round(5.055, 2)."<br>";    // 5.06

	// 소수점 위3자리에서 반올림
	echo round(1241757, -3)."<br>"; // 1242000
	
?>

결과

510-34
9
-4
3
4
4
4
1.96
5.05
5.06
1242000

위의 예제는 실수의 버림, 올림, 반올림에 대한 처리 예입니다.