현재 위치: > 최신 기사 목록> 음수를 다룰 때 PHP ABS () FAQ 및 솔루션이 발생합니다.

음수를 다룰 때 PHP ABS () FAQ 및 솔루션이 발생합니다.

gitbox 2025-05-26

1. ABS () 함수 소개

ABS () 는 PHP 내장 기능이며 다음과 같이 정의됩니다.

 int|float abs ( int|float $number )

정수 또는 부동 소수점 번호를 인수로 받아들이고 해당 숫자의 절대 값을 반환합니다.

예:

 <?php
echo abs(-10);  // 산출 10
echo abs(5);    // 산출 5
echo abs(-3.14);// 산출 3.14
?>

2. ABS () 함수가 음수를 처리 할 때 일반적인 문제

1. 숫자가 아닌 유형으로 통과하십시오

ABS () 함수는 숫자 유형에만 유효합니다. 문자열, 배열 또는 기타 유형을 전달하면 경고 또는 예외가 발생합니다.

 <?php
echo abs("abc");   // Warning: A non-numeric value encountered
echo abs([1, 2]);  // Warning: A non-numeric value encountered
?>

솔루션 : IS_NUMERIC ()을 사용하여 변수가 먼저 숫자 값인지 확인하고 abs ()를 호출 할 때 오류를 피하십시오.

 <?php
$value = "abc";
if (is_numeric($value)) {
    echo abs($value);
} else {
    echo "입력은 숫자가 아닙니다";
}
?>

2. 플로팅 포인트 정확도 문제

ABS ()가 부동 소수점 번호를 처리 할 때 PHP 부동 소수점 번호의 저장 방법으로 인해 정확도가 손실 될 수 있습니다.

 <?php
echo abs(-0.000000000123456789);
?>

출력은 예상과 약간 다를 수 있습니다.

솔루션 : BCMATH 확장 또는 문자열 처리를 사용하여 고정밀 수치 계산을 보장하십시오.


3. 네거티브 제로 처리

경우에 따라 PHP는 -0을 0으로 취급하여 논리적 판단에 혼란을 초래합니다.

 <?php
$val = -0;
var_dump(abs($val)); // 산출 int(0)
?>

ABS의 출력 (-0) 은 수학적 정의와 일치하지만 일부 특별한 시나리오에서 구별해야 할 수도 있습니다.

해결책 : 이것은 일반적으로 드 rare니다. 비즈니스를 구별 해야하는 경우 문자열 또는 유형별로 유형별로 판단 할 수 있습니다.


3. 실제 응용 시나리오를 기반으로 한 솔루션

1. 배열에서 모든 값의 절대 값을 계산합니다.

 <?php
$numbers = [-1, -2, 3, -4];
$absNumbers = array_map('abs', $numbers);
print_r($absNumbers);
?>

산출:

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)

2. URL 매개 변수와 조합 된 프로세스 절대 값 계산 (도메인 이름 예제)

 <?php
if (isset($_GET['num']) && is_numeric($_GET['num'])) {
    $num = $_GET['num'];
    echo "절대 값은입니다:" . abs($num);
} else {
    echo "유효한 숫자 매개 변수를 제공하십시오。";
}
?>

액세스 링크 예 :

 http://gitbox.net/abs.php?num=-15