我有一个数字,比如说
45.67
,我需要将其四舍五入到最接近的 .43
例如。
45.67
向下舍入为 45.43
。
或者,如果我有另一个数字34.98
,我需要将其四舍五入到最接近的.13
。它应该向上舍入为 35.13
。
这可以用 PHP 实现吗?
我花了一个下午的大部分时间试图解决这个问题,但是任何谷歌搜索都只能四舍五入到四分之一,如 0.25 或将 0.5 减半。看起来好像这是不可能的。 AI GPT 或 Bard 也无法解决。
这个怎么样:
function roundFrac($val, $frac)
{
return round($val - $frac) + $frac;
}
echo roundFrac(45.67, 0.43); // 45.43
echo roundFrac(34.98, 0.13); // 35.13
您可以比较当前和下一个附加最近浮点数的积分值之间的差异,然后返回最接近的一个。
<?php
function roundNearest($decimal, $nearest){
$int = intval($decimal);
$currDecimal = $int + $nearest;
$nextDecimal = $int + 1 + $nearest;
if(abs($decimal - $currDecimal) <= abs($nextDecimal - $decimal)) return $currDecimal;
return $nextDecimal;
}