为什么PHP在计算平均值时没有返回正确的结果?

时间:2015-06-24 17:31:46

标签: php

我正在尝试解决数组中的所有值是否相同的问题。我尝试计算平均值并将其与数组中的值进行比较。当我编写代码时,我收到了PHP的奇怪结果。有时它有时不对。

我认为这是一些php bug,在我的本地版本PHP(5.6.10)中。所以我在3v4l和PHPBox上测试它,两个服务在所有PHP版本或HHVM中得到相同的结果。

有一些示范代码,我正在做什么,......

<?php
$arr[0] = array(1.01, 1.01, 1.01);
$arr[1] = array(1.65, 1.65, 1.65);

foreach($arr as $k => $v) {
    if( ( array_sum($v) / count($v) ) == max($v) ) {
        echo "OK\n";
    } else {
        echo "BAD ".( array_sum($v) / count($v) )." == ".max($v)." \n";
    }
}

你可以在那里跑http://3v4l.org/QOSaD这里有什么问题?有没有办法解决它?

1 个答案:

答案 0 :(得分:0)

这个浮点魔法,@ MarkBaker为你提供文章的链接。 你使用这个脏的黑客(重新定义浮动到字符串)来比较它

$arr[0] = array(1.01, 1.01, 1.01);
$arr[1] = array(1.65, 1.65, 1.65);

foreach($arr as $k => $v) {
    if( (string) ( array_sum($v) / count($v) ) == (string) max($v) ) {
        echo "OK\n";
    } else {
        echo "BAD ".( array_sum($v) / count($v) )." == ".max($v)." \n";
    }
}