在C#中,如何将浮点数舍入到最近的int?
我看到Math.Ceiling和Math.Round,但这些返回小数。我是否使用其中一个然后转换为Int?
答案 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。