如何将浮点数舍入到C#中最接近的int?

54 .net c# rounding

在C#中,如何将浮点数舍入到最近的int?

我看到Math.Ceiling和Math.Round,但这些返回小数.我是否使用其中一个然后转换为Int?

Mat*_*ley 125

如果要舍入到最近的 int:

int rounded = (int)Math.Round(precise, 0);
Run Code Online (Sandbox Code Playgroud)

您还可以使用:

int rounded = Convert.ToInt32(precise);
Run Code Online (Sandbox Code Playgroud)

哪个将用于Math.Round(x, 0);为你舍入和投射.它看起来更整洁,但IMO稍微不那么清晰.


如果你想要整理:

int roundedUp = (int)Math.Ceiling(precise);
Run Code Online (Sandbox Code Playgroud)

  • 我还要注意Math.Round使用银行家的舍入.也就是说,具有精确.5的非整数部分的数字将四舍五入到最接近的偶数.这在进行舍入数字的总和时非常有用,但通常是意外的 - Math.Round(3.5)= 4,Math.Round(6.5)= 6. (11认同)
  • 这个问题含糊不清.标题表明他想要围捕,而他表示他想要最近的int.这是两件不同的事情. (9认同)

Mik*_*ffe 13

脱离我的头顶:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
Run Code Online (Sandbox Code Playgroud)

  • 当一个浮点数转换为int将向下舍入时,+ 0.5确保转换为最接近的int.但是,这仅适用于正浮动. (5认同)