将float转换为int并将其限制为-1< - > 1

时间:2014-03-28 15:48:25

标签: c integer

听起来很简单但我需要一种方法将int限制在此范围内而不会溢出。 或者将其限制为0 - 1 对于所有可能的浮点输入值。没有比较。

限制浮动也是可以接受的,但它需要很快。

更新:已找到范围0 - 1的解决方案

int i = (int)f;
i = (((i + (i-1))%2)+1)/2;  

没有必要低估一个措辞不好的问题 不知道它将如何在该范围的上半部附近发挥作用。

1 个答案:

答案 0 :(得分:4)

这会将值限制为0-1

float f;
int i = (f>=1);

如果您想要设置{-1,0,1}的结果,请尝试

float f;
int i = (f>=1)-(f<=1);

如果你想进行某种舍入,可以切换到其他阈值