如何在c#中向上舍入

Sco*_*ott 45 c# rounding

我想总是在c#中,例如,从6.88到7,从1.02到2等.

我怎样才能做到这一点?

Bro*_*ass 98

使用 Math.Ceiling()

double result = Math.Ceiling(1.02);
Run Code Online (Sandbox Code Playgroud)

  • @henry.dv - 我想知道为什么舍入函数会返回一个双精度开始 (4认同)

Tal*_*joe 20

使用Math.Ceiling: Math.Ceiling(value)


Sun*_*est 6

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

我做了一个基准测试(.Net 5/release),但 Math.Ceiling() 更快、更有效。

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)
Run Code Online (Sandbox Code Playgroud)