PHP浮点数运算需要注意的地方

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
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页