【问题标题】:PHP - Getting a float variable internal valuePHP - 获取浮点变量内部值
【发布时间】:2017-09-18 20:19:34
【问题描述】:

我正在尝试在 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 floating-point-precision


    【解决方案1】:

    在 PHP 中,浮点数的打印值取决于 PHP 配置的“精度”。

    你可以改变它:

    ini_set('precision', YOUR_DESIRED_PRECISION_AS_INTEGER);
    

    例如:

    ini_set('precision', 18);
    

    您的号码可能显示如下:

    浮点数 1.62149999999999994

    浮点数 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

    【讨论】:

      【解决方案2】:

      如果您不想编辑配置文件...您可以在some_function()some_other_function() 中使用round(val, precision)。这样您就可以将结果返回到您想要的精度。检查:
      http://php.net/manual/en/function.round.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-31
        相关资源
        最近更新 更多