채택완료

php 연산 0으로 나누었을때...

아래와 같이 각각의 변수값이 0일 경우에  0을 0으로 나누게 되어 사칙연산 에러로 결과값 NAN 이 찍힙니다.

이경우 결과값으로 NAN 대신 0이 찍히게 하려면 어떻게 하려 할까요?

$st=0;
$av=0;
echo $av/$st;

|

답변 4개 / 댓글 6개

채택된 답변
+20 포인트
Copy
<?php
$st = 0;
$av = 0;
echo (is_nan($st/$av) ? 0 : $st/$av); 
?>

이렇게 해보세요~

답변에 대한 댓글 2개

is_nan 함수가 있었네요..감사합니다.. 잘 처리되었습니다
처리하시려면 이렇게 처리하셔야 합니다.

<?php
$st = 0;
$av = 0;
echo ($st === 0 || $av ===0) ? 0 : $st/$av;
?>

0 / 0 이 과연 0일까요?

모든 수가 답입니다.

수학에서 이런걸 부정이라고 하죠.

수학이든 컴이든 0으로 나누면 절대 안됩니다.

위 신비님 답변 처럼 분기해서 처리하는 것이 났습니다.

그리고 PHP8 이상에서는 0으로 나누면 치명적에러 ( Fatal Error )가 발생합니다.

답변에 대한 댓글 1개

수학상 오류나는거는 질문전에 이미 알고 있었구요, 변수다 보니 각각의 변수에 모두 0이 들어갈 경우의 결과를 페이지상 보여줘야 하고자 질문을 올렸습니다.
답변 감사드립니다.

https://ko.wikipedia.org/wiki/%EB%B6%84%EC%88%98_(%EC%88%98%ED%95%99)

수학 개념 상 해당 식 자체가 성립이 안 될 듯 ....

if 조건으로 분자 부모 모두 0 이면 걍 0이다란 식으로 처리하셔야 할 듯 합니다.

제대로 int값으로 변환이 안되서 그런듯 한데요
$st=0;
$av=0;
echo round($av/$st);

0을 그냥 빈값으로 인식되어 그런듯 한데 숫자로 인식되도록 하시면 될듯 합니다.

답변에 대한 댓글 3개

답변감사합니다.
사칙연산에 0으로 나누었을때 오류가 나는것이 정상이기 때문에 알려주신대로 해도 마찬가지로 NAN으로 결과값이 나오네요 ㅠ
아니면 number_format으로 해보세요
질문전에 floor, number_format 함수를 이용해보았지만 모두 마찬가지 입니다.

답변을 작성하려면 로그인이 필요합니다.