PHP - 可以将小数四舍五入到任何指定的小数,甚至 0.64 或 0.11

问题描述 投票:0回答:2

我有一个数字,比如说

45.67
,我需要将其四舍五入到最接近的
.43

例如。

45.67
向下舍入为
45.43
。 或者,如果我有另一个数字
34.98
,我需要将其四舍五入到最接近的
.13
。它应该向上舍入为
35.13

这可以用 PHP 实现吗?

我花了一个下午的大部分时间试图解决这个问题,但是任何谷歌搜索都只能四舍五入到四分之一,如 0.25 或将 0.5 减半。看起来好像这是不可能的。 AI GPT 或 Bard 也无法解决。

php math rounding
2个回答
1
投票

这个怎么样:

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

0
投票

您可以比较当前和下一个附加最近浮点数的积分值之间的差异,然后返回最接近的一个。

<?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;
}

现场演示

© www.soinside.com 2019 - 2024. All rights reserved.