【发布时间】:2016-01-25 15:19:28
【问题描述】:
我正在写一个 serialize() 解析器/验证器,我遇到了这个(有点意外的行为):
$float = 875.6745;
echo "serialize({$float}) === " . serialize($float) . "\n";
echo "(float) \"875.67449999999997\" === " . ((float) "875.67449999999997") . "\n";
输出:
序列化(875.6745) === d:875.67449999999997;
(浮点数)“875.67449999999997”=== 875.6745
当我序列化一个浮点数时,存储的值与输入并不真正匹配,但是,当序列化的字符串重新floated 时,该值再次匹配......
我应该担心吗?
【问题讨论】:
-
那么,至于我的问题....?我应该担心吗? (我知道浮点数不准确,这就是我将标签应用于我的问题的原因)。
-
答案是......这取决于......如果在 32 位系统上导出和在 64 位系统上导入,这可能会导致细微差异,反之亦然;但在大多数情况下它不会引起任何问题
-
这就是我所希望的。谢谢
标签: php serialization floating-point floating-accuracy