没有内置方法的舍入

本文关键字:舍入 方法 内置 | 更新日期: 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);