有人可以解释为什么不可能将大浮点数与它的等效字符串进行比较:
这个例子:
$f = 1234567890123456789.0;
$s = (string)$f;
var_dump($f, $s, $f == $s);
将导致:
float(1.2345678901235E+18)
string(19) "1.2345678901235E+18"
bool(false)
为什么比较是错误的?
答案 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";