gpt4 book ai didi

php - PHP 中四舍五入为 float 的倍数

转载 作者:行者123 更新时间:2023-12-04 04:53:20 24 4
gpt4 key购买 nike

我想将数字四舍五入到特定数字或它们的倍数。对于整数来说没问题,但是当我想像这个例子一样舍入到浮点数的倍数时就会出现问题:
package的数目(或倍数)我想圆:

2.6

When I type 1 it should round up to 2.6

When I type 2,5 it should round up to 2,6

When I type 3 it should round up to 5,2 (2 * 2,6)



我尝试使用 fmod检查可分性,但它对我不起作用。

谢谢大家。

最佳答案

您可以将您的数字除以您的基本浮点数,将其四舍五入到最接近的整数,然后重新相乘。

伪代码

def round_to_float(base_float,to_round)
return ceiling(to_round / base_float) * base_float
end

示例与 3 :
ceiling(3.0 / 2.6) * 2.6
ceiling(1.15) * 2.6
2 * 2.6
5.2

对于多次检查,您可以使用 fmod($to_round,$base_float) == 0 ,但不可避免地会出现浮点误差,这不是测试浮点数的可靠方法。

可以肯定的是,您应该选择一个足够小的 epsilon (按照计算机上机器精度的顺序),并确保您的商 to_round/base_floatepsilon 内其 floor .

把它们放在一起
def round_to_float(base_float,to_round)
quotient = to_round / base_float
if (absolute_value(quotient - floor(quotient)) < epsilon)
return false
else
return ceiling(quotient) * base_float
end
end

其中 epsilon 是一个非常小的数字。从理论上讲,它应该是您的机器精度......通常类似于 10^-9。实际上,在大多数用例中 10^-4 应该就足够了。

关于php - PHP 中四舍五入为 float 的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17102574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com