C# 如何在c中汇总#

C# 如何在c中汇总#,c#,rounding,C#,Rounding,我想总是用c#进行取整,例如,从6.88到7,从1.02到2,等等 我该怎么做呢?使用数学。天花板: 数学上限(值)使用 如果存在负值,Math.Round具有其他选项(在.Net Core 3或更高版本中) 不过我做了一个基准测试(.Net 5/release),Math.天花板()更快更有效 Math.Round( 6.88, MidpointRounding.ToPositiveInfinity) ==> 7 (~23 clock cycles) Math.Round(-6.88

我想总是用c#进行取整,例如,从6.88到7,从1.02到2,等等

我该怎么做呢?

使用数学。天花板:
数学上限(值)

使用


如果存在负值,Math.Round具有其他选项(在.Net Core 3或更高版本中)

不过我做了一个基准测试(.Net 5/release),Math.天花板()更快更有效

Math.Round( 6.88, MidpointRounding.ToPositiveInfinity) ==> 7   (~23 clock cycles)
Math.Round(-6.88, MidpointRounding.ToPositiveInfinity) ==> -6  (~23 clock cycles)

Math.Round( 6.88, MidpointRounding.AwayFromZero)       ==> 7   (~23 clock cycles)
Math.Round(-6.88, MidpointRounding.AwayFromZero)       ==> -7  (~23 clock cycles)

Math.Ceiling( 6.88)                                    ==> 7   (~1 clock cycles)
Math.Ceiling(-6.88)                                    ==> -6  (~1 clock cycles)

我看到的第一个。这比使用awayfromzero更清楚。谢谢更清晰、更准确。:)
AwayFromZero
用于其他用途,在这种情况下会中断。是否有返回
int
long
的选项?@KyleDelaney没有,但您可以通过
(int)Math.天花(someDouble)轻松将其强制转换
@henry.dv-我想知道为什么舍入函数会返回一个双精度,以可能重复的Try-to-write-Math开头。并充分关注您看到的所有功能不完整的规格。-1.02应该变成什么?简单的谷歌搜索会有所帮助:)是的,我在谷歌上搜索过,列表上的第一个是这篇文章。。。谢谢你的邀请。
Math.Round( 6.88, MidpointRounding.ToPositiveInfinity) ==> 7   (~23 clock cycles)
Math.Round(-6.88, MidpointRounding.ToPositiveInfinity) ==> -6  (~23 clock cycles)

Math.Round( 6.88, MidpointRounding.AwayFromZero)       ==> 7   (~23 clock cycles)
Math.Round(-6.88, MidpointRounding.AwayFromZero)       ==> -7  (~23 clock cycles)

Math.Ceiling( 6.88)                                    ==> 7   (~1 clock cycles)
Math.Ceiling(-6.88)                                    ==> -6  (~1 clock cycles)