我有一个包含七个数字的数组:
array(159.60, 159.60, 159.60, 159.60, 159.60, 199.50, 199.50);
array(395.68, 395.68, 395.68, 395.68, 395.68, 395.68, 395.68);
array(531.18, 531.18, 531.18, 531.19, 531.18, 531.18, 531.18);
我需要检查所有值是否相同,只有一个扭曲:有时值不同略因为四舍五入错误(参见第三个数组中的第四个值)。我希望他们被认为是相同的。
检查所有数组值是否在容差值内相同的最佳方法是什么,例如0.1
。
答案 0 :(得分:2)
对于每个数组,我们都可以找到max
& min
值并检查它是否大于0
或@zerkms建议的值。
$tests = array(
array(159.60, 159.60, 159.60, 159.60, 159.60, 199.50, 199.50),
array(395.68, 395.68, 395.68, 395.68, 395.68, 395.68, 395.68),
array(531.18, 531.18, 531.18, 531.19, 531.18, 531.18, 531.18)
);
foreach ($tests as $i => $test) {
$result = abs(max($test) - min($test)) <= 0.1;
var_dump($result);
}
<强>输出强>
bool(false)
bool(true)
bool(true)
答案 1 :(得分:-1)
您可以编写一个非常简单的循环来检查:
function withinTolerance($array,$tolerance){
$initialValue = $array[0]; //Set the initial value
foreach ($array as $num){
//Loop the array, and if the value is outside the tolerance, return false.
if ($num < $initialValue - $tolerance || $num > $initialValue + $tolerance) return false;
}
return true;
}