var_export (11.2);
返回
11.199999999999999
使用Php 5.6
WTF吗
答案 0 :(得分:4)
来自php.net手册页的评论:
从版本5.4.22看起来var_export使用了 serialize_precision ini设置,而不是使用的精度 用于浮点数的正常输出。结果是因为 例如版本5.4.22将输出var_export(1.1) 1.1000000000000001(17是默认精度值),而不是之前的1.1。
很高兴知道。我也不知道这种变化。
<强> serialize_precision 强>
自PHP 4.3.2起可用。在PHP 5.3.5之前,默认值为100。
因此,我们可以使用我们熟悉的行为:ini_set('serialize_precision', 100)
;
使用ini_set()时要非常小心,因为这可能会进一步改变代码的行为。 A&#34;安全&#34;方法是使用这样的东西:
$storedValue = ini_get('serialize_precision');
ini_set('serialize_precision', 100);
// Your isolated code goes here e.g var_export($float);
ini_set('serialize_precision', $storedValue);
这可确保代码中更深层次/更深层次的更改不会受到影响。
通常,在代码中使用ini_set()应被视为危险,如 它可能有严重的副作用。将代码重构为没有ini_set()的函数通常是更好的选择。