gpt4 book ai didi

php - 为什么 PHP 不提供用于浮点比较的 Epsilon 常量?

转载 作者:行者123 更新时间:2023-12-04 22:46:28 24 4
gpt4 key购买 nike

在看到许多关于比较浮点数相等性的 PHP 问题后,答案是简单地为 Epsilon 选择一个任意值,然后执行 if( abs($a-$b) < 0.000001 ) .

问题是 Epsilon 通常比人们倾向于选择的值 [2.22e-16 在我的机器上] 小得多,而且实际上计算起来非常简单:

$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() , Python 有 sys.float_info.epsilon ,那么为什么 PHP 将其置之不理呢?

最佳答案

我知道这是一个老问题,但从 PHP 7.2 开始提供。
PHP_FLOAT_EPSILON (漂浮)

最小的可表示正数 x,因此 x + 1.0 != 1.0。从 PHP 7.2.0 开始可用。

http://php.net/manual/en/reserved.constants.php

关于php - 为什么 PHP 不提供用于浮点比较的 Epsilon 常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23837286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com