我有一个浮点值,必须约束为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,......
是否有数学函数或方便的东西来实现这一目标?当值无效时,我会将其四舍五入到最接近的有效值.
那么,要达到你想要的效果......
float input = ????;
float desiredValue = ceilf(input*4.0f)/4.0f;
Run Code Online (Sandbox Code Playgroud)
我认为ceilf()是C99的一部分,所以请确保您已将编译器设置为它.
[编辑]
虽然这不测试输入== 1/4的倍数,但它将执行相同的操作.数字是1/4的倍数不会改变.@whatnick提出了一个很好的观点,浮点比较是不可靠的.
另外,没有测试/跳跃会有很小的性能提升. 小提升.