코딩 스쿨 PHP

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

PHP Numbers

PHP 숫자: 기본 데이터 타입과 활용 방법

PHP에서 숫자란 무엇인가?

PHP는 웹 개발에서 자주 사용되는 서버 측 스크립팅 언어로, 다양한 데이터 타입을 지원합니다. 그 중에서도 숫자는 가장 기본적이고 중요한 데이터 타입 중 하나로, 정수와 실수를 포함합니다. 숫자는 산술 연산, 데이터 처리, 로직 제어 등 다양한 용도로 활용되며, PHP에서는 숫자를 효율적으로 다루기 위한 다양한 기능과 함수를 제공합니다. 이 글에서는 PHP에서의 숫자 데이터 타입, 연산자, 관련 함수, 변환 방법 등을 예제와 함께 자세히 살펴보겠습니다.


1. PHP에서의 숫자 데이터 타입

PHP는 숫자를 **정수(Integer)**와 **실수(Float)**의 두 가지 기본 데이터 타입으로 분류합니다.

1.1 정수 (Integer)

정수는 소수점이 없는 숫자를 나타냅니다. PHP에서 정수는 10진수, 8진수(앞에 0), 16진수(앞에 0x)로 표현할 수 있습니다.

<?php
  $decimal = 25;         // 10진수
  $octal = 075;          // 8진수 (10진수로 61)
  $hex = 0x1A;           // 16진수 (10진수로 26)

  echo $decimal;  // 출력: 25
  echo $octal;    // 출력: 61
  echo $hex;      // 출력: 26
?>

  • 10진수: 일반적으로 사용하는 숫자 체계입니다.
  • 8진수: 숫자 앞에 0을 붙여 표시합니다.
  • 16진수: 숫자 앞에 0x를 붙여 표시하며, A-F까지의 문자를 사용할 수 있습니다.

1.2 실수 (Float)

실수는 소수점이 있는 숫자를 나타냅니다. PHP에서는 실수를 부동소수점 숫자로 처리합니다.

<?php
  $price = 19.99;
  $pi = 3.14159;

  echo $price;  // 출력: 19.99
  echo $pi;     // 출력: 3.14159
?>

  • 부동소수점: 소수점 이하의 자릿수를 포함하는 숫자입니다.
  • 실수는 과학적 표기법으로도 표현할 수 있습니다 (예: 1.2e3는 1200을 의미).

2. 숫자 연산자

PHP는 다양한 산술 및 비교 연산자를 제공하여 숫자 데이터를 효과적으로 처리할 수 있습니다.

2.1 산술 연산자

산술 연산자는 기본적인 수학 연산을 수행합니다.

연산자 의미 예제 결과
+ 덧셈 5 + 3 8
- 뺄셈 5 - 3 2
* 곱셈 5 * 3 15
/ 나눗셈 5 / 3 1.666...
% 나머지 5 % 3 2
** 거듭제곱 2 ** 3 8

예제: 산술 연산자 사용

<?php
  $a = 10;
  $b = 3;

  echo $a + $b;  // 출력: 13
  echo $a - $b;  // 출력: 7
  echo $a * $b;  // 출력: 30
  echo $a / $b;  // 출력: 3.3333333333333
  echo $a % $b;  // 출력: 1
  echo $a ** $b; // 출력: 1000
?>

2.2 비교 연산자

비교 연산자는 두 값을 비교하여 참(true) 또는 거짓(false)을 반환합니다.

연산자 의미 예제 결과
== 값이 같은지 비교 5 == '5' true
=== 값과 타입이 같은지 비교 5 === '5' false
!= 값이 다른지 비교 5 != 3 true
<> 값이 다른지 비교 5 <> 3 true
!== 값 또는 타입이 다른지 비교 5 !== '5' true
< 작음 비교 3 < 5 true
> 큼 비교 5 > 3 true
<= 작거나 같음 비교 3 <= 5 true
>= 크거나 같음 비교 5 >= 3 true

예제: 비교 연산자 사용

<?php
  $a = 5;
  $b = '5';

  var_dump($a == $b);   // 출력: bool(true)
  var_dump($a === $b);  // 출력: bool(false)
  var_dump($a != 3);    // 출력: bool(true)
  var_dump($a > 3);     // 출력: bool(true)
?>

2.3 증감 연산자

증감 연산자는 변수의 값을 증가시키거나 감소시킵니다.

연산자 의미 예제 결과
++$a 전위 증가 ++$a a의 값이 1 증가 후 반환
$a++ 후위 증가 $a++ a의 현재 값 반환 후 1 증가
--$a 전위 감소 --$a a의 값이 1 감소 후 반환
$a-- 후위 감소 $a-- a의 현재 값 반환 후 1 감소

예제: 증감 연산자 사용

<?php
  $a = 5;

  echo ++$a; // 출력: 6
  echo $a++; // 출력: 6
  echo $a;   // 출력: 7

  echo --$a; // 출력: 6
  echo $a--; // 출력: 6
  echo $a;   // 출력: 5
?>


3. 숫자 관련 함수

PHP는 숫자를 다루기 위한 다양한 내장 함수를 제공합니다. 이 함수들은 숫자의 타입 검사, 랜덤 숫자 생성, 반올림, 포맷팅 등 여러 용도로 사용됩니다.

3.1 타입 검사 함수

변수의 데이터 타입을 확인하는 함수들입니다.

  • is_int(): 정수인지 확인합니다.
  • is_float(): 실수인지 확인합니다.
  • is_numeric(): 숫자 또는 숫자로 변환 가능한지 확인합니다.

예제: 타입 검사 함수 사용

<?php
  $a = 10;
  $b = 10.5;
  $c = "10";

  var_dump(is_int($a));      // 출력: bool(true)
  var_dump(is_float($b));    // 출력: bool(true)
  var_dump(is_numeric($c));  // 출력: bool(true)
?>

3.2 랜덤 숫자 생성 함수

랜덤 숫자를 생성하는 함수들입니다.

  • rand(): 범위 내의 랜덤 정수를 반환합니다.
  • mt_rand(): Mersenne Twister 알고리즘을 사용하는 랜덤 정수를 반환합니다.

예제: 랜덤 숫자 생성 함수 사용

<?php
  // rand() 사용
  echo rand(); // 출력: 예) 1804289383

  echo rand(1, 100); // 출력: 1과 100 사이의 랜덤 숫자

  // mt_rand() 사용
  echo mt_rand(); // 출력: 예) 846930886
  echo mt_rand(1, 100); // 출력: 1과 100 사이의 랜덤 숫자
?>

3.3 반올림 함수

숫자를 반올림하거나 올림, 내림할 때 사용합니다.

  • ceil(): 무조건 올림합니다.
  • floor(): 무조건 내림합니다.
  • round(): 지정된 소수점 이하 자리에서 반올림합니다.

예제: 반올림 함수 사용

<?php
  $num = 3.14159;

  echo ceil($num);   // 출력: 4
  echo floor($num);  // 출력: 3
  echo round($num, 2); // 출력: 3.14
?>

3.4 숫자 포맷 함수

숫자를 특정 형식으로 포맷팅할 때 사용합니다.

  • number_format(): 숫자를 천 단위로 구분하고, 소수점 이하 자릿수를 지정할 수 있습니다.

예제: 숫자 포맷 함수 사용

<?php
  $number = 1234567.8910;

  echo number_format($number);         // 출력: 1,234,568
  echo number_format($number, 2);      // 출력: 1,234,567.89
  echo number_format($number, 2, '.', ','); // 출력: 1,234,567.89
?>

3.5 형변환 함수

숫자를 다른 타입으로 변환할 때 사용합니다.

  • intval(): 값을 정수로 변환합니다.
  • floatval(): 값을 실수로 변환합니다.
  • doubleval(): 값을 실수로 변환합니다.

예제: 형변환 함수 사용

<?php
  $str = "123";
  $floatStr = "123.45";

  $intVal = intval($str);
  $floatVal = floatval($floatStr);

  var_dump($intVal);    // 출력: int(123)
  var_dump($floatVal);  // 출력: float(123.45)
?>


4. 숫자 변환

PHP는 동적 타이핑 언어로, 변수의 타입을 자동으로 변환하지만, 필요에 따라 명시적으로 변환할 수도 있습니다.

4.1 명시적 형변환 (Casting)

변수의 타입을 명시적으로 변환할 때 사용합니다.

<?php
  $var = "100";

  // 정수로 변환
  $intVar = (int)$var;
  echo $intVar; // 출력: 100

  // 실수로 변환
  $floatVar = (float)$var;
  echo $floatVar; // 출력: 100.0
?>

4.2 자동 형변환

PHP는 필요에 따라 자동으로 변수의 타입을 변환합니다. 예를 들어, 문자열과 숫자를 연산할 때 문자열을 숫자로 자동 변환합니다.

<?php
  $a = "10";
  $b = 5;

  $sum = $a + $b; // 문자열 "10"이 정수 10으로 자동 변환
  echo $sum; // 출력: 15
?>


5. 숫자 관련 유용한 함수

PHP는 숫자를 효율적으로 다루기 위한 다양한 내장 함수를 제공합니다. 아래는 자주 사용되는 함수들의 목록과 설명입니다.

함수 설명
is_int() 변수의 타입이 정수인지 확인합니다.
is_float() 변수의 타입이 실수인지 확인합니다.
is_numeric() 변수의 값이 숫자 또는 숫자로 변환 가능한지 확인합니다.
rand() 범위 내의 랜덤 정수를 반환합니다.
mt_rand() Mersenne Twister 알고리즘을 사용하는 랜덤 정수를 반환합니다.
ceil() 숫자를 무조건 올림합니다.
floor() 숫자를 무조건 내림합니다.
round() 숫자를 반올림합니다.
number_format() 숫자를 특정 형식으로 포맷팅합니다.
intval() 값을 정수로 변환합니다.
floatval() 값을 실수로 변환합니다.
abs() 절댓값을 반환합니다.
max() 인수 중 가장 큰 값을 반환합니다.
min() 인수 중 가장 작은 값을 반환합니다.

예제: 유용한 숫자 함수 사용

<?php
  $num = -15.75;

  echo abs($num);           // 출력: 15.75
  echo max(10, 20, 30);     // 출력: 30
  echo min(10, 20, 30);     // 출력: 10

  $formatted = number_format($num, 2, '.', ',');
  echo $formatted;          // 출력: -15.75

  echo intval("123abc");    // 출력: 123
  echo floatval("123.45abc"); // 출력: 123.45
?>


6. 숫자 관련 예제

실제 웹 개발에서 숫자를 어떻게 활용할 수 있는지 다양한 예제를 통해 살펴보겠습니다.

6.1 나이 계산 예제

사용자의 생년을 입력받아 현재 나이를 계산하는 예제입니다.

<?php
  $birthYear = 1990;
  $currentYear = date("Y");
  $age = $currentYear - $birthYear;

  echo "당신의 나이는 $age 세입니다."; // 예: 당신의 나이는 34 세입니다.
?>

6.2 랜덤 번호 생성 예제

로또 번호 생성기와 같은 랜덤 번호를 생성하는 예제입니다.

<?php
  $numbers = array();

  while(count($numbers) < 6){
    $num = mt_rand(1, 45);
    if(!in_array($num, $numbers)){
      $numbers[] = $num;
    }
  }

  sort($numbers);
  echo "생성된 로또 번호: " . implode(", ", $numbers);
  // 예: 생성된 로또 번호: 5, 12, 23, 34, 37, 42
?>

6.3 가격 포맷팅 예제

제품의 가격을 천 단위로 구분하여 포맷팅하는 예제입니다.

<?php
  $price = 1234567.89;
  $formattedPrice = number_format($price, 2, '.', ',');

  echo "제품 가격: ₩$formattedPrice"; // 출력: 제품 가격: ₩1,234,567.89
?>


7. 주의사항

숫자를 다룰 때 몇 가지 주의해야 할 사항들이 있습니다.

7.1 부동 소수점 정밀도

부동 소수점 숫자는 정확한 값을 표현하지 못할 수 있습니다. 예를 들어, 0.1 + 0.20.3이 아닌 0.30000000000000004로 표현될 수 있습니다.

<?php
  $a = 0.1;
  $b = 0.2;
  $sum = $a + $b;

  var_dump($sum); // 출력: float(0.30000000000000004)
?>

이를 해결하기 위해서는 BC Math타입 캐스팅을 활용할 수 있습니다.

7.2 큰 숫자 처리

PHP는 시스템의 아키텍처에 따라 처리할 수 있는 정수의 범위가 다릅니다. 32비트 시스템에서는 약 -2,147,483,648부터 2,147,483,647까지, 64비트 시스템에서는 훨씬 더 큰 범위를 처리할 수 있습니다. 매우 큰 숫자를 다루어야 할 경우 BC Math 확장이나 GMP 라이브러리를 사용하는 것이 좋습니다.


8. 요약

PHP는 다양한 숫자 데이터 타입과 이를 효율적으로 처리할 수 있는 연산자, 함수들을 제공합니다. **정수(Integer)**와 **실수(Float)**는 기본적인 숫자 타입으로, 산술 연산자와 비교 연산자를 통해 숫자 데이터를 자유롭게 조작할 수 있습니다. 또한, rand(), ceil(), floor(), number_format() 등의 내장 함수를 활용하여 랜덤 숫자 생성, 반올림, 포맷팅 등 다양한 작업을 수행할 수 있습니다.

숫자를 다룰 때는 부동 소수점 정밀도와 큰 숫자 처리에 주의해야 하며, 필요에 따라 형변환을 적절히 활용하는 것이 중요합니다. PHP의 강력한 숫자 처리 기능을 잘 활용하면 웹 애플리케이션의 다양한 요구사항을 효과적으로 충족시킬 수 있습니다. 숫자 관련 함수를 충분히 익히고, 실제 프로젝트에 적용해보면서 PHP의 숫자 처리 능력을 향상시켜 보세요.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com