汇总到系列中的下一个值
我试图将计算结果四舍五入到存储在数组中的系列中的下一个最大值。我已经尝试了以下方法,但是当我希望它四舍五入到 16 系列中的下一个值时,10.3 的计算会四舍五入到 10。当 $s = 14.9 时,它可以工作。我究竟做错了什么?
$s = 10.3
// List of standard cable CSA
$csa = array(1,1.5,2.5,4,6,10,16,25,35,50,70,95,120,150,185,240,300,400);
function nextSizeUp($s, $csa) {
$closest = null;
foreach ($csa as $size) {
if ($closest === null || abs($s - $closest) > abs($size - $s)) {
$closest = $size;
}
}
return $closest;
}
echo nextSizeUp($s,$csa);
回答
您正在尝试四舍五入,而不是找到最接近的值。像这样的东西:
$s = 10.3;
// List of standard cable CSA
$csa = array(1,1.5,2.5,4,6,10,16,25,35,50,70,95,120,150,185,240,300,400);
function nextSizeUp($s, $csa)
{
foreach ($csa as $size) {
if ($size >= $s) {
return $size;
}
}
return false;
}
echo nextSizeUp($s,$csa);
这种回报16和false当值大于400大。