>백엔드 개발 >PHP 튜토리얼 >PHP에서 부정확한 부동 소수점 연산에 대한 솔루션

PHP에서 부정확한 부동 소수점 연산에 대한 솔루션

墨辰丷
墨辰丷원래의
2018-05-31 10:07:301663검색

이 글은 주로 PHP에서 발생하는 부정확한 부동 소수점 연산에 대한 해결책을 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

최근에 만드시나요? 덧셈과 뺄셈의 문제는 부동 소수점 연산이 부정확하다는 점입니다. 해석된 언어가 부동 소수점 연산에 문제가 있는 것은 사실인 것 같습니다.

먼저 코드를 살펴보세요:

<?php
$a = 0.1;
$b = 0.7;
var_dump(($a + $b) == 0.8);

인쇄된 값은 실제로 부울 false입니다.

PHP 매뉴얼에는 부동 소수점 숫자에 대해 다음과 같은 경고 메시지가 있습니다.

경고

부동 소수점 정밀도

0.1이나 0.7과 같은 단순한 소수는 약간의 정밀도 손실 없이 내부 이진 형식으로 변환할 수 없습니다. 이로 인해 혼란스러운 결과가 발생할 수 있습니다. 예를 들어, 바닥((0.1+0.7)*10)은 일반적으로 예상되는 8 대신 7을 반환합니다. 왜냐하면 결과의 내부 표현은 7.9999999999... 와 같기 때문입니다.

이것은 유한한 자릿수로 특정 소수를 정확하게 표현하는 것이 불가능하다는 사실과 관련이 있습니다. 예를 들어, 10진수 1/3은 0.3333333이 됩니다.

그러므로 부동 소수점 숫자 결과가 마지막 자리까지 정확하다고 절대 믿지 말고 두 부동 소수점 숫자가 같은지 비교하지 마세요. 정말로 더 높은 정밀도가 필요하다면 임의의 정밀도 수학 함수나 gmp 함수를 사용해야 합니다

그런 다음 위의 계산을

위 내용은 이 기사의 전체 내용이므로 모든 사람의 학습에 도움이 되기를 바랍니다.


관련 권장 사항:

PHP는 SQL 문 서식 지정 기능을 구현합니다.

php단일형 디자인 패턴을 구현하는 방법

PHP에서 TP5 요청 요청 개체 방법

위 내용은 PHP에서 부정확한 부동 소수점 연산에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.