我正在尝试建立在 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);
评估结果为假;
为什么 var_dump()
不打印内部值?
最佳答案
在 PHP 中, float 的打印值取决于 PHP 配置“精度”。
您可以通过以下方式更改:
ini_set('precision', YOUR_DESIRED_PRECISION_AS_INTEGER);
例如与:
ini_set('precision', 18);
您的号码可能会显示如下内容:
float 1.62149999999999994
float 1.6214999999999995
现在它们之间的区别更加清晰了。
所以你的增量可能是: $delta = 0.00000000000001;这实际上取决于您正在寻找的精度。
如果您需要进行精确的数学计算,请查看 BC Math Functions.
<小时/>引用资料/来源
PHP - Floating point numbers - User Contributed Notes - deminy at deminy dot net
关于PHP - 获取浮点变量内部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800456/