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

我有一个必须限制为 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 提出了一个很好的观点,即浮点比较是不可靠的。

此外,不进行测试/跳跃会略微提高性能。 提升。

https://stackoverflow.com/questions/3814758/

相关文章:

c# - 使用 Web 应用程序管理定时事件的首选方法是什么?

regex - 在正则表达式匹配中检测标量的精确字符串值

php - 永久登录

configuration - 在 Windows 中为 gvim 加载 .vimrc 并更改字体和

macos - 如何为 Mac OS X 制作可启动 DVD?

sql - Informix 7.3 - 声明日期列数据类型,默认为插入/更新时的当前日期

vim - 如何指定文件的缩进?

assembly - 是否有适用于 Windows 的免费小型汇编代码编译器/汇编器?

objective-c - 如何将 self 作为方法参数传递?

maven-2 - 为什么 Maven2 在每次构建时检查 stax-ex 的更新?