我想将float变量舍入为int,而不使用任何内置方法。 这就像
13.4 => 13
13.49 => 13
13.5 => 14
13.6 => 14
到目前为止,这是我能够达到的最接近但不确定这是否有效。
int Roundoff(float num)
{
int temp = (int) num;
num *= 10;
if(num%10 >= 5)
{
return temp + 1;
}
else
{
return temp;
}
}
答案 0 :(得分:5)
你可以试试这个:
int Roundoff(float num) {
return num < 0 ? (int) (num - 0.5) : (int) (num + 0.5);
}
负值 技巧(您无法添加0.5
):
-13.9 -> -14.0
-13.1 -> -13
小心,因为
int.MaxValue < float.MaxValue
int.MinValue > float.MinValue
答案 1 :(得分:4)
嗯,你已经在使用铸造,有时这可以满足你的需要。 如果您只是在数字中加0.5,然后转换为整数,您将得到舍入值。
13.4 + 0.5 = 13.9 -> 13 (when casted to int)
13.49 + 0.5 = 13.99 -> 13
13.5 + 0.5 = 14.0 -> 14
13.6 + 0.5 = 14.1 -> 14
这就是你编写方法的方法。
int Roundoff(float num)
{
return (int) (num + 0.5);
}
答案 2 :(得分:1)
float f = 0.3; // Or whatever
int i = (int) (f + 0.5f);