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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值