【问题标题】:Invalid value when using floats [duplicate]使用浮点数时值无效[重复]
【发布时间】:2013-10-31 11:27:16
【问题描述】:

下面的操作给出了错误的结果。

$First      = '45.4000';
$Second     = '4.6800000000';
$Third      = '50.00';

echo ( $First + $Second ) - $Third;

输出: 0.079999999999998

预期输出: 0.08

我正在研究如何在不使用 number_format/sprintf ...等的情况下获得正确的结果。

由于这个问题影响了我的代码中的多个位置,并且必须检查所有内容并格式化,这很痛苦。

【问题讨论】:

标签: php floating-point floating-accuracy


【解决方案1】:

作为“快速修复”,更改 php.ini 文件中的 precision 设置。 Documentation.

默认情况下,它是 14,这几乎总是超出您的需要(如果您需要这么高的精度,您将使用专用的数学库)。将其更改为类似 4 的值,结果将四舍五入到该长度 - 请注意,如果需要,您仍然可以根据具体情况使用 number_format 覆盖它。

【讨论】:

    【解决方案2】:

    试试这个

    $First      = '45.4000';
    $Second     = '4.6800000000';
    $Third      = '50.00';
    
    $sk = ( $First + $Second ) - $Third;
    
    echo round($sk,4);
    
    ?>
    

    【讨论】:

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