> 백엔드 개발 > PHP 튜토리얼 > PHP 부동 소수점 계산이 때때로 예상치 못한 결과를 생성하는 이유는 무엇입니까?

PHP 부동 소수점 계산이 때때로 예상치 못한 결과를 생성하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2025-01-01 13:03:11
원래의
527명이 탐색했습니다.

Why Do PHP Floating-Point Calculations Sometimes Produce Unexpected Results?

PHP 부동 소수점 정밀도 문제 및 솔루션

이 문서에서는 부동 소수점 계산으로 인해 예상치 못한 결과가 발생할 수 있는 PHP의 일반적인 문제를 다룹니다. 부동 소수점 연산의 부정확성

예:

$a = '35';
$b = '-34.99';
echo ($a + $b);
로그인 후 복사

이 작업의 결과는 예상된 0.01이 아닌 0.009999999999998입니다.

왜 이런 일이 발생합니까?

Floating- 점 연산은 실수의 근사치입니다. 산술. 부동 소수점 숫자는 유한 정밀도의 이진 형식으로 저장되므로 표현할 수 있는 숫자의 수가 제한됩니다. 이로 인해 특히 매우 크거나 매우 작은 숫자가 포함된 작업을 수행할 때 부정확성이 발생할 수 있습니다.

이 문제를 어떻게 해결할 수 있습니까?

여러 가지 해결 방법이 있습니다. 이 제한 사항은 다음과 같습니다.

  • 결과 반올림: round()를 사용할 수 있습니다. 결과를 지정된 소수 자릿수로 반올림하는 함수입니다. 예를 들어, round($a $b, 2)는 0.01을 반환합니다.
  • 정수 사용: 통화 작업과 같은 특정 계산의 경우 대신 정수를 사용하는 것이 더 정확할 수 있습니다. 부동 소수점 숫자. 예를 들어 $35.00를 3500으로 저장하고 $34.99를 3499로 저장한 다음 정수 나누기를 수행하여 결과를 계산할 수 있습니다.

추가 참고 사항:

  • PHP는 다른 것과 같은 10진수 데이터 유형을 제공하지 않습니다.
  • 정확한 계산을 수행하고 예상치 못한 결과를 방지하려면 부동 소수점 연산의 한계를 이해하는 것이 중요합니다.

위 내용은 PHP 부동 소수점 계산이 때때로 예상치 못한 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿