my sql 실행 시간 이 마이너스 인 원인 분석

 
<?php
list($usec, $sec) = explode(' ', microtime());
$timer = (float)$usec + (float)$sec;
mysql_query($query, $active_db);
list($usec, $sec) = explode(' ', microtime());
$stop = (float)$usec + (float)$sec;
$diff = $stop - $timer;
?>
$stop 과$timer 는 모두 전 환 된 후 얻 은 부동 소수점 입 니 다.대부분의 경우 echo$stop 과 echo$timer 가 얻 은 결 과 는 육안 으로 관찰 하면 같 지만 컴퓨터 에 저 장 된 저장 소 는 같 지 않 기 때문에 결 과 는 0 이 아니 라 마이너스 일 수도 있 습 니 다.pp 매 뉴 얼 에서 제시:부동 소수점 정밀도:분명 간단 한 10 진법 점 수 는 0.1 이나 0.7 과 같 습 니 다.약간의 정밀도 도 를 잃 지 않 고 내부 2 진법 으로 전환 할 수 없습니다.이 는 혼 란 스 러 운 결 과 를 초래 할 수 있다.예 를 들 어 floor(0.1+0.7)*10)는 예상 한 8 이 아 닌 7 로 되 돌아 가 는 경우 가 많다.이 결 과 는 내부 적 으로 7.99999999999999 와 유사 하기 때문이다.이것 은 한 가지 사실 과 관련 이 있다.그것 은 한 정 된 자릿수 로 어떤 십 진법 점 수 를 정확하게 표현 할 수 없다 는 것 이다.예 를 들 어 10 진법 의 1/3 이 0.33333333 으로 바 뀌 었 다.그 러 니 부동 소수점 결과 가 마지막 까지 정확 하 다 는 것 을 영원히 믿 지 말고 두 부동 소수점 이 일치 하 는 지 비교 하지 마 세 요.만약 확실히 더 높 은 정밀도 가 필요 하 다 면,임의의 정밀도 수학 함수 나 gmp 함 수 를 사용 해 야 한다.

좋은 웹페이지 즐겨찾기