如何在C#中将数字四舍五入到小数点后两位?

我想用Math.Round函数来做这个

这是一个例子:

 decimal a = 1.994444M; Math.Round(a, 2); //returns 1.99 decimal b = 1.995555M; Math.Round(b, 2); //returns 2.00 

你可能也想看看银行家四舍五入与以下超载:

 Math.Round(a, 2, MidpointRounding.ToEven); 

这里有更多的信息。

尝试这个:

 twoDec = Math.Round(val, 2) 

就我个人而言,我从来没有做过任 尽可能坚持下去,因为无论如何舍入都是CS中的一个红鲱鱼。 但是你想为你的用户格式化数据,为此,我发现string.Format("{0:0.00}", number)是一个好方法。

如果你想要一个string

 > (1.7289).ToString("#.##") "1.73" 

或者一个小数

 > Math.Round((Decimal)x, 2) 1.73m 

但要记住! 舍入不是分配的,即。 round(x*y) != round(x) * round(y) 。 所以在计算结束之前不要进行任何四舍五入,否则你将失去准确性。

维基百科有一个很好的四舍五入的网页 。

所有.NET(托pipe)语言都可以使用任何公共语言运行时(CLR)舍入机制。 例如, Math.Round() (如上所述)方法允许开发人员指定舍入types(舍入到偶数或从零开始)。 Convert.ToInt32()方法及其变体使用round-to-even 。 天花板()和Floor()方法是相关的。

您也可以使用自定义数字格式进行四舍五入。

请注意, Decimal.Round()使用与Math.Round()不同的方法;

这是银行家的舍入algorithm的一个有用的位置。 在这里看到雷蒙德的幽默职位之一关于四舍五入…

//转换成两位小数

 String.Format("{0:0.00}", 140.6767554); // "140.67" String.Format("{0:0.00}", 140.1); // "140.10" String.Format("{0:0.00}", 140); // "140.00" Double d = 140.6767554; Double dc = Math.Round((Double)d, 2); // 140.67 decimal d = 140.6767554M; decimal dc = Math.Round(d, 2); // 140.67 

=========

 // just two decimal places String.Format("{0:0.##}", 123.4567); // "123.46" String.Format("{0:0.##}", 123.4); // "123.4" String.Format("{0:0.##}", 123.0); // "123" 

也可以结合“0”和“#”。

 String.Format("{0:0.0#}", 123.4567) // "123.46" String.Format("{0:0.0#}", 123.4) // "123.4" String.Format("{0:0.0#}", 123.0) // "123.0" 

这是在C#中四舍五入到小数点后两位:

 label8.Text = valor_cuota .ToString("N2") ; 

在VB.NET中:

  Imports System.Math round(label8.text,2) 

有一件事你可能要检查的是math的圆整机制。圆:

http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx

除此之外,我推荐Math.Round(inputNumer,numberOfPlaces)方法在* 100/100之上,因为它更干净。

你应该能够指定你想要使用Math.Round(YourNumber,2)

你可以在这里阅读更多。

stringa =“10.65678”;

十进制d = Math.Round(Convert.ToDouble(a.ToString()),2)

  public double RoundDown(double number, int decimalPlaces) { return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces); } 

Math.Floor(123456.646 * 100)/ 100会返回123456.64

我知道它的一个老问题,但请注意math轮string格式轮之间的以下差异:

 decimal d1 = (decimal)1.125; Math.Round(d1, 2).Dump(); // returns 1.12 d1.ToString("#.##").Dump(); // returns "1.13" decimal d2 = (decimal)1.1251; Math.Round(d2, 2).Dump(); // returns 1.13 d2.ToString("#.##").Dump(); // returns "1.13"