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

PHP - Possible to round a decimal to any specified decimal even 0.64 or 0.11

提问人:warmwhisky 提问时间:8/26/2023 最后编辑:nice_devwarmwhisky 更新时间:8/26/2023 访问量:52

问:

我有一个数字,比方说,我需要四舍五入到最接近的45.67.43

例如。 向下舍入为 . 或者,如果我有另一个数字,我需要将其四舍五入到最接近的.它应四舍五入为 .45.6745.4334.98.1335.13

PHP可以做到这一点吗?

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

PHP 数学 舍入

评论

0赞 aynber 8/26/2023
当然,通过简单的数学和比较。但这并不是开箱即用的东西
0赞 Barmar 8/26/2023
使用 和 向下和向上舍入。将分数添加到每个分数中,看看哪个更接近原始分数。floor()ceil()
2赞 Barmar 8/26/2023
像这样四舍五入到分数是一件非常奇怪的事情。用例是什么?
0赞 warmwhisky 8/26/2023
@barmar我正在向会计包添加价格更改功能。用户可以选择百分比增加和四舍五入小数进行调整。虽然我考虑将其限制为 0.25 的倍数,但我的目标是容纳从 0.1 到 0.99 的所有可能性。但是,根据我的观察,这似乎无法实现。
0赞 Barmar 8/26/2023
为什么无法实现?我在上面解释了如何实现它。还有其他方法,例如获取当前分数和所需分数之间的差值。如果大于 .50 四舍五入,则小于 .50 四舍五入。

答:

1赞 Olivier 8/26/2023 #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赞 warmwhisky 8/26/2023
谢谢善良的先生,这在所有情况下都有效。我很惊讶这是多么简单!