반응형
php 매뉴얼에는 두 부동소수점 수가 동일한지 여부를 절대 비교하지 말라는 문구가 있지만 실제 상황에서는 부동소수점 수에 대한 연산 및 비교가 포함될 수 있으며 이 경우 BC Math 확장 함수 또는 GMP 함수를 사용하십시오.
일반적인 상황을 살펴보겠습니다
<?php
$a = 1.3;
$b = 1.2;
$c = 0.1;
$d = $a - $b; //0.1
if ($d == $c) {
echo '$c와 $d는 같다!<br>'
} else {
echo '$c는 $d와 같지 않다! <br>;
}
printf("%.20f<br>", $d);
정상적인 사고에 따르면, 1.3-1.2는 0.1과 같으며, 비교는 동일해야 하지만, 실제 비교는 확실히 동일하지 않습니다. 부동 소수점 수의 정확도가 제한되어 있기 때문에, 연산에 오차가 생길 수 있습니다. 실제 결과 $d는 포맷 출력을 사용할 수 있습니다. $d는 실제로 0.10000000000000000882로 표시되므로 부동 소수점 수를 비교하지 말고, 만약 필요하다면, 우리는 다음과 같은 방법으로 실현할 수 있습니다
<?php
$a = 1.3;
$b = 1.2;
$c = 0.1;
$d = $a - $b; //0.1
if (bccomp($d, $c, 1) === 0) {
echo '$c와 $d는 같다!<br>';
} else {
echo '$c는 $d와 같지 않다!';
}
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 신호 처리 (0) | 2022.09.23 |
---|---|
PHP에서 웹 페이지 건너뛰기 방법 (0) | 2022.09.23 |
php 작업MySQL(pdo) (0) | 2022.09.22 |
PHP는 두 개의 타임스탬프가 같은 주에 있는지 어떻게 판단합니까? (0) | 2022.09.22 |
php 타이머 phptimer (0) | 2022.09.22 |