如何将值C#舍入到最接近的整数?

wil*_*iam 62 c#

我想将double加倍到int.

例如,

double a=0.4, b=0.5;
Run Code Online (Sandbox Code Playgroud)

我想将它们都改为整数.

以便

int aa=0, bb=1;
Run Code Online (Sandbox Code Playgroud)

aa来自abb来自b.

有没有这样做的公式?

Bru*_*oLM 164

使用Math.Ceiling围捕

Math.Ceiling(0.5); // 1
Run Code Online (Sandbox Code Playgroud)

使用Math.Round刚轮

Math.Round(0.5, MidpointRounding.AwayFromZero); // 1
Run Code Online (Sandbox Code Playgroud)

并且Math.Floor向下舍

Math.Floor(0.5); // 0
Run Code Online (Sandbox Code Playgroud)

  • bb =(int)Math.Round(b,0,MidpointRounding.AwayFromZero); (10认同)
  • @jnielsen:感谢您指出这一点并提供代码示例。我已经改正了。 (2认同)

Lar*_*nal 15

看看Math.Round.然后,您可以将结果转换为int.


Mit*_*eat 5

数学轮

将双精度浮点值舍入为最接近的整数值。


Che*_*hen 5

.NET框架Math.Round默认使用银行家的四舍五入。您应该使用此重载:

Math.Round(0.5d, MidpointRounding.AwayFromZero)  //1
Math.Round(0.4d, MidpointRounding.AwayFromZero)  //0
Run Code Online (Sandbox Code Playgroud)


Nig*_*ist 5

只是用更多示例调整@BrunoLM 的答案:

Math.Round(0.4); // =0
Math.Round(0.5); // =0
Math.Round(0.6); // =1

Math.Round(0.4, MidpointRounding.AwayFromZero); // = 0
Math.Round(0.5, MidpointRounding.AwayFromZero); // = 1
Math.Round(0.6, MidpointRounding.AwayFromZero); // = 1

Math.Round(0.4, MidpointRounding.ToEven); // = 0
Math.Round(0.5, MidpointRounding.ToEven); // = 0
Math.Round(0.6, MidpointRounding.ToEven); // = 1
Run Code Online (Sandbox Code Playgroud)