PHP - 获取浮点变量内部值

标签 php floating-point-precision

我正在尝试建立在 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

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

Codepad

关于PHP - 获取浮点变量内部值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13800456/

相关文章:

php - 动态创建我的应用程序的完整 URL

php - 有没有办法让 cURL 等到页面的动态更新完成?

php - ClassNotFoundException : Attempted to load class "FOSUserBundle" from namespace "FOS\UserBundle"

c++ - 如何重现浮点 cos(x)!=cos(x)

java - 处理浮点精度问题(测试与SAT的碰撞)

c - Visual Studio 2010 的多精度

php - MySql 查询返回所有数据

如果 session.save_handler 设置为内存缓存,Phpmyadmin 不起作用

python - 在不同平台上使用 Numpy

javascript - Javascript 有没有办法区分整数和非常接近的小数?