没有内置方法的Roundoff

use*_*107 4 c# rounding

我想将float变量舍入为int,而不使用任何内置方法.这就像

13.4 => 13
13.49 => 13
13.5 => 14
13.6 => 14
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是我能够达到的最接近但不确定这是否有效.

int Roundoff(float num)
{
    int temp = (int) num;

    num *= 10;
    if(num%10 >= 5)
    {
        return temp + 1;
    }
    else
    {
        return temp;
    }

}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 5

你可以试试这个:

int Roundoff(float num) {
  return num < 0 ? (int) (num - 0.5) : (int) (num + 0.5);
}
Run Code Online (Sandbox Code Playgroud)

有一个带负值技巧(你不能只添加):0.5

  -13.9 -> -14.0
  -13.1 -> -13
Run Code Online (Sandbox Code Playgroud)

而且要小心,因为

  int.MaxValue < float.MaxValue
  int.MinValue > float.MinValue
Run Code Online (Sandbox Code Playgroud)