PHP浮点数运算需要注意的地方
$n = 0.58 * 100;
echo serialize($n) . "\n"; // 32位 d:57.999999999999993;
echo serialize($n) . "\n"; // 64位 d:57.99999999999999289457264239899814128875732421875;
// 不能直接比较
var_dump($n == 58); // bool(false)
var_dump((int)$n == 58); // bool(false)
// 先转为string再进行比较
var_dump("$n" == 58); // bool(true)
var_dump(strval($n) == 58); // bool(true)
var_dump((string)$n == 58); // bool(true)
// 也不能直接转int
echo intval(0.58 * 100) . "\n"; // 57
// 先转为string再转int
echo intval(strval(0.58 * 100)) . "\n"; // 58