没有内置方法的舍入
本文关键字:舍入 方法 内置 | 更新日期: 2023-09-27 17:53:13
我想在不使用任何内置方法的情况下将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;
}
}
你可以试试:
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
你已经在使用cast了,有时这可以给你你所需要的。如果你只是在你的数字中加上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);
}
float f = 0.3; // Or whatever
int i = (int) (f + 0.5f);