我有一个必须限制为 0.25 的倍数的浮点值。
有效值示例: 1.0, 1.25, 2.0, 2.5, 20.25, 20.5, 21.0, 21.25, ...
无效值的示例: 0.93, 3.31, 4.249, 5.02, ...
是否有数学函数或方便实现此目的的东西?当该值无效时,我会将其四舍五入为最接近的有效值。
最佳答案
嗯,达到你想要的结果...
float input = ????;
float desiredValue = ceilf(input*4.0f)/4.0f;
我认为 ceilf()
是 C99 的一部分,因此请确保您的编译器已设置为它。
[编辑]
虽然这不会测试输入 == 1/4 的倍数,但它会执行相同的操作。 1/4 的倍数不会改变。 @whatnick 提出了一个很好的观点,即浮点比较是不可靠的。
此外,不进行测试/跳跃会略微提高性能。 小提升。
关于iphone - 如何确保浮点值始终是 0.25 的倍数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3814758/