>  기사  >  백엔드 개발  >  PHP 부동 소수점은 무엇을 의미합니까?

PHP 부동 소수점은 무엇을 의미합니까?

藏色散人
藏色散人원래의
2022-01-19 09:25:137145검색

PHP 부동 소수점은 부동 소수점 숫자 부동 소수점, 이중 정밀도 숫자 또는 실수 실수라고도 하는 부동 소수점 유형을 나타냅니다. 해당 정의 구문은 "$a = 1.234; $b = 1.2e3;"입니다. 부동 소수점 숫자의 단어 길이 플랫폼에 따라 다르지만 일반적으로 최대값은 십진수 14자리의 정밀도로 1.8e308입니다.

PHP 부동 소수점은 무엇을 의미합니까?

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

php 부동 소수점은 무엇을 의미하나요?

Float 부동 소수점 유형

부동 소수점 유형(부동 소수점 숫자 부동, 배정밀도 숫자 double 또는 실수 실수라고도 함)은 다음 구문 중 하나로 정의할 수 있습니다.

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
$d = 1_234.567; // 从 PHP 7.4.0 开始支持
?>

floating 형식으로 표현됩니다. 포인트 숫자(PHP 7.4.0 밑줄은 이전에 지원되지 않았습니다):

LNUM          [0-9]+(_[0-9]+)*
DNUM          ([0-9]*(_[0-9]+)*[\.]{LNUM}) | ({LNUM}[\.][0-9]*(_[0-9]+)*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})

부동 소수점 숫자의 단어 길이는 플랫폼에 따라 다르지만 일반적으로 최대값은 십진수 14자리의 정밀도로 1.8e308입니다(64비트 IEEE 형식). ).

부동 소수점 숫자의 정밀도

부동 소수점 숫자는 정밀도가 제한되어 있습니다. 시스템에 따라 다르지만 PHP는 일반적으로 IEEE 754 이중 형식을 사용하므로 반올림으로 인한 최대 상대 오차는 1.11e-16입니다. 기본이 아닌 수학 연산은 더 큰 오류를 초래할 수 있으므로 복합 연산을 수행할 때 오류 전파를 고려해야 합니다.

또한 0.1이나 0.7과 같이 십진수로 정확하게 표현할 수 있는 유리수는 가수가 아무리 많아도 내부에서 사용하는 이진수로는 정확하게 표현할 수 없기 때문에 조금도 잃지 않고 이진수 형식으로 변환할 수 없습니다. 정밀도가 좀. 이는 혼란스러운 결과를 초래할 수 있습니다. 예를 들어, 바닥((0.1+0.7)*10)은 일반적으로 예상되는 8 대신 7을 반환합니다. 왜냐하면 결과의 내부 표현은 실제로 7.999999999999991118... 과 같기 때문입니다.

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

추천 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP 부동 소수점은 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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