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

时间:2009-05-25 00:04:09

标签: c# .net rounding

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

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

6 个答案:

答案 0 :(得分:120)

如果要舍入到最近 int:

int rounded = (int)Math.Round(precise, 0);

您也可以使用:

int rounded = Convert.ToInt32(precise);

将使用Math.Round(x, 0);为您舍入和演员。它看起来更整洁,但IMO稍微不那么清晰。


如果您要围绕向上

int roundedUp = (int)Math.Ceiling(precise);

答案 1 :(得分:12)

脱离我的头顶:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);

答案 2 :(得分:3)

(int)Math.Round(myNumber,0)

答案 3 :(得分:3)

最简单的方法是只添加0.5f,然后将其转换为int。

答案 4 :(得分:1)

  

我是否使用其中一个然后转换为Int?

是。这样做没有问题。小数和双精度可以完全表示整数,因此不会出现表示错误。 (你不会得到一个案例,例如,Round返回4.999而不是5。)

答案 5 :(得分:0)

如果你确定它在int(Int32.MinValue到Int32.MaxValue)的范围内,你可以强制转换为int。