在 C# 中,如何将浮点数向上舍入为最接近的 int?
在 C# 中,如何将 float 向上舍入为最接近的 int?
我看到 Math.Ceiling 和 Math.Round,但它们返回小数。 我是否使用其中之一然后转换为 Int?
In C#, how do I round a float upwards to the nearest int?
I see Math.Ceiling and Math.Round, but these returns a decimal. Do I use one of these then cast to an Int?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
如果您想四舍五入到最近 int:
您还可以使用:
这将使用
Math.Round(x, 0);
为您进行四舍五入和转换。 它看起来更整洁,但在我看来稍微不太清晰。如果您想向上舍入:
If you want to round to the nearest int:
You can also use:
Which will use
Math.Round(x, 0);
to round and cast for you. It looks neater but is slightly less clear IMO.If you want to round up:
从我的头顶上掉下来:
Off the top of my head:
(int)Math.Round(myNumber, 0)
(int)Math.Round(myNumber, 0)
最简单的方法是添加
0.5f
到其中,然后将其转换为 int。The easiest is to just add
0.5f
to it and then cast this to an int.是的。 这样做是没有问题的。 小数和双精度数可以精确地表示整数,因此不会出现表示错误。 (例如,您不会遇到 Round 返回 4.999...而不是 5 的情况。)
Yes. There is no problem doing that. Decimals and doubles can represent integers exactly, so there will be no representation error. (You won't get a case, for instance, where Round returns 4.999... instead of 5.)
如果您确定它在 int 范围内(Int32.MinValue 到 Int32.MaxValue),则可以转换为 int。
You can cast to an int provided you are sure it's in the range for an int (Int32.MinValue to Int32.MaxValue).