Epsilon의 임의의 값을 선택하기 만하면 부동 소수점을 비교하는 것에 대한 PHP의 많은 질문을 본 다음 if(abs($a-$b) < 0.000001)
을 수행하십시오. ,왜 PHP는 부동 소수점 비교를 위해 엡실론 상수를 제공하지 않습니까?
$macheps = (float) 1.0;
do {
$macheps /= (float) 2.0;
} while((float) (1.0 + ($macheps/2.0)) != 1.0);
printf("Epsilon: %0.25f\n", $macheps);
C++는 std::numeric_limits<double>::epsilon()
있습니다
문제는 엡실론은 일반적으로 사람들이 [내 컴퓨터에 2.22e-16]을 선택하는 경향이 값보다 훨씬 작 실제로 계산하는 것이 매우 간단하다는 것이다 파이썬은 sys.float_info.epsilon
을 가지고 있습니다. 그렇다면 PHP는 왜 그것을 공중에 버립니 까?
아마도 다른 사람들은 정밀도에 대해 서로 다른 요구 사항을 갖기 때문에 –
"대답은 단순히 엡실론의 임의의 값을 선택하는 것입니다." 이 대답은 간단하고 호소하며 죽은 잘못입니다. 그러지 마. –
'PHP_FLOAT_EPSILON'이 PHP 7.2에 추가되었습니다 : 가장 작은 표현 가능한 양수 x이므로 x + 1.0! = 1.0_ –