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

我想把整数翻倍到int。

例如,

double a=0.4, b=0.5; 

我想把它们都改为整数。

以便

 int aa=0, bb=1; 

aa是从abb是从b

任何公式要做到这一点?

使用Math.Ceiling来整理

 Math.Ceiling(0.5); // 1 

使用Math.Round来回合

 Math.Round(0.5, MidpointRounding.AwayFromZero); // 1 

Math.Floor向下Math.Floor

 Math.Floor(0.5); // 0 

检查Math.Round 。 然后你可以将结果转换为一个int

C#在默认情况下在Math.Round中使用银行家的四舍五入。 你应该使用这个重载:

 Math.Round(0.5d, MidpointRounding.AwayFromZero) //1 Math.Round(0.4d, MidpointRounding.AwayFromZero) //0 

使用函数代替MidpointRounding.AwayFromZero

 myRound(1.11125,4) 

答: – 1.1114

 public static Double myRound(Double Value, int places = 1000) { Double myvalue = (Double)Value; if (places == 1000) { if (myvalue - (int)myvalue == 0.5) { myvalue = myvalue + 0.1; return (Double)Math.Round(myvalue); } return (Double)Math.Round(myvalue); places = myvalue.ToString().Substring(myvalue.ToString().IndexOf(".") + 1).Length - 1; } if ((myvalue * Math.Pow(10, places)) - (int)(myvalue * Math.Pow(10, places)) > 0.49) { myvalue = (myvalue * Math.Pow(10, places + 1)) + 1; myvalue = (myvalue / Math.Pow(10, places + 1)); } return (Double)Math.Round(myvalue, places); } 

Math.Round

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

很简单。 所以按照这个代码。

 decimal d = 10.5; int roundNumber = (int)Math.Floor(d + 0.5); 

结果是 11

Math.Round(0.5)由于浮点舍入误差而返回零,因此您需要将舍入误差量添加到原始值以确保不会舍入,例如。

 Console.WriteLine(Math.Round(0.5, 0).ToString()); // outputs 0 (!!) Console.WriteLine(Math.Round(1.5, 0).ToString()); // outputs 2 Console.WriteLine(Math.Round(0.5 + 0.00000001, 0).ToString()); // outputs 1 Console.WriteLine(Math.Round(1.5 + 0.00000001, 0).ToString()); // outputs 2 Console.ReadKey();