如何确保浮点值始终是0.25的倍数?

ope*_*rog 1 iphone math

我有一个浮点值,必须约束为0.25的倍数.

有效值的示例:1.0,1.25,2.0,2.5,20.25,20.5,21.0,21.25,......

无效值的示例:0.93,3.31,3.249,5.02,......

是否有数学函数或方便的东西来实现这一目标?当值无效时,我会将其四舍五入到最接近的有效值.

Ste*_*ani 5

那么,要达到你想要的效果......

float input = ????;

float desiredValue = ceilf(input*4.0f)/4.0f;
Run Code Online (Sandbox Code Playgroud)

我认为ceilf()是C99的一部分,所以请确保您已将编译器设置为它.


[编辑]

虽然这不测试输入== 1/4的倍数,但它将执行相同的操作.数字是1/4的倍数不会改变.@whatnick提出了一个很好的观点,浮点比较是不可靠的.

另外,没有测试/跳跃会有很小的性能提升. 提升.