将大浮点数与其等效字符串进行比较

时间:2014-05-13 18:49:31

标签: php string floating-point

有人可以解释为什么不可能将大浮点数与它的等效字符串进行比较:

这个例子:

$f = 1234567890123456789.0;
$s = (string)$f;
var_dump($f, $s, $f == $s);

将导致:

float(1.2345678901235E+18)
string(19) "1.2345678901235E+18"
bool(false)

为什么比较是错误的?

1 个答案:

答案 0 :(得分:1)

浮点运算:

$f = 1234567890123456789.0;
$s = (string)$f;

echo(serialize($f));
echo "\n";
echo(serialize($s));

d:1.2345678901234568E+18;
s:19:"1.2345678901235E+18";
相关问题