我正在尝试解决数组中的所有值是否相同的问题。我尝试计算平均值并将其与数组中的值进行比较。当我编写代码时,我收到了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这里有什么问题?有没有办法解决它?
答案 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";
}
}