2012-12-10 2 views
2

PHP에서 부동 비교를 수행 할 때 필요한 델타를 설정하려고합니다. 나는 그 차이를보기 위해 나의 변수를 자세히보고 싶다.PHP - 부동 변수 내부 값 얻기

나는 2 개의 계산 된 변수 $ a, $ b가 있습니다.

$a = some_function(); 

$b = some_other_function(); 

PHP에서 사용하는 정확한 숫자를 어떻게 확인할 수 있습니까?

내가 델타 지정해야이 공식과 비교하려면 :

$delta = 0.00001; 
if (abs($a-$b) < $delta) { 
    echo "identical"; 
} 

위해서 var_dump를 ($ A는, $ B가) 1.6215을 반환 1.6215. 하지만 정확히 똑같지 않다는 것을 알고 있습니다.

var_dump($a === $b); 

false로 평가됩니다.

var_dump()은 내부 값을 인쇄하지 않습니까?

답변

10

PHP에서 부동 소수점 숫자의 인쇄 된 값은 PHP 구성 "정밀도"에 따라 다릅니다. 와 함께 예를 들어

ini_set('precision', YOUR_DESIRED_PRECISION_AS_INTEGER); 

:

당신과 함께 그것을 변경할 수 있습니다

ini_set('precision', 18); 

귀하의 번호가 같은 것을 표시 할 수 있습니다

플로트 1.62149999999999994

플로트를 1.6214999999999995

그래서 이제는 그 차이가 더 명확 해졌습니다.

그래서 델타는 다음과 같습니다. $ delta = 0.00000000000001; 그것은 당신이 찾고있는 정밀도에 달려 있습니다.

당신이 정확한 수학적 계산을해야하는 경우

는 소스

PHP - Floating point numbers

PHP - Floating point numbers - User Contributed Notes - deminy at deminy dot net

Codepad

01 /를 BC Math Functions.


참고 자료를 살펴해야합니까

0

구성 파일을 수정하고 싶지 않다면 ... some_function()some_other_function()round(val, precision)을 사용할 수 있습니다. 그렇게하면 원하는 정밀도로 결과를 반환 할 수 있습니다. 확인 :
http://php.net/manual/en/function.round.php