听起来很简单但我需要一种方法将int限制在此范围内而不会溢出。 或者将其限制为0 - 1 对于所有可能的浮点输入值。没有比较。
限制浮动也是可以接受的,但它需要很快。
更新:已找到范围0 - 1的解决方案
int i = (int)f;
i = (((i + (i-1))%2)+1)/2;
没有必要低估一个措辞不好的问题 不知道它将如何在该范围的上半部附近发挥作用。
答案 0 :(得分:4)
这会将值限制为0-1
float f;
int i = (f>=1);
如果您想要设置{-1,0,1}的结果,请尝试
float f;
int i = (f>=1)-(f<=1);
如果你想进行某种舍入,可以切换到其他阈值