71

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

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

4

6 回答 6

155

如果要四舍五入到最接近的int:

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

您还可以使用:

int rounded = Convert.ToInt32(precise);

它将用于Math.Round(x, 0);为您舍入和投射。它看起来更整洁,但 IMO 不太清晰。


如果你想四舍五入

int roundedUp = (int)Math.Ceiling(precise);
于 2009-05-25T00:13:59.813 回答
16

在我的头顶上:

float fl = 0.678;
int rounded_f = (int)(fl+0.5f);
于 2009-05-25T00:10:40.397 回答
3

(int)Math.Round(myNumber, 0)

于 2009-05-25T00:07:41.620 回答
2

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

于 2009-05-25T00:22:29.720 回答
1

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

是的。这样做没有问题。小数和双精度可以精确表示整数,所以不会有表示错误。(例如,您不会遇到 Round 返回 4.999... 而不是 5 的情况。)

于 2009-05-25T00:21:55.383 回答
0

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

于 2009-05-25T07:01:11.260 回答