不知何故1不等于1(PHP)

我有一个关联数组,其值为浮点数,它们应该是概率.因此,我总结它们并要求结果实际上是1.

$total = array_sum($array);
echo '$total = '.$total."\n";
if ($total == 1) {
    die("total is 1");
} else {
    die("total is not 1");
}

这神秘地输出

$total = 1
total is not 1

执行var_dump($total)会产生float(1),但是甚至$total ==(float)1都会返回false.

这是怎么回事?

解决方法:

PHP(和其他语言)中的浮点数不精确,因此(float)1实际上可能是1.00000000000000123113或.99999999999999823477

有关更多信息,请参阅答案PHP – Floating Number Precision

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...