圆形双倍到两个小数位

时间:2010-08-30 16:42:49

标签: c# c#-4.0

  

可能重复:
  c# - How do I round a decimal value to 2 decimal places (for output on a page)

将双精度数舍入到两位小数的最佳方法是什么,并将它固定在2位小数位?

示例:2.346 - > 2.35,          2 - > 2.00

我希望避免这样的事情,我必须将double转换为字符串,然后再转换为double,这似乎是一种不好的方法。

4 个答案:

答案 0 :(得分:40)

double someValue = 2.346;    
String.Format("{0:0.00}", someValue);

答案 1 :(得分:22)

将值四舍五入到所需的精度,然后对其进行格式化。总是更喜欢包含中点舍入参数的Math.Round版本。该参数指定如何将中点值(5)作为最后一位数处理。

如果您没有指定AwayFromZero作为param的值,您将获得默认行为,即ToEven。 例如,使用ToEven作为舍入方法,您将获得:

Math.Round(2.025,2)==2.02

Math.Round(2.035,2)==2.04

相反,使用MidPoint.AwayFromZero param:

Math.Round(2.025,2,MidpointRounding.AwayFromZero)==2.03

Math.Round(2.035,2,MidpointRounding.AwayFromZero)==2.04

因此,对于正常的舍入,最好使用此代码:

var value=2.346;
var result = Math.Round(value, 2, MidpointRounding.AwayFromZero);
var str=String.Format("{0:0.00}", result );

答案 2 :(得分:9)

double someValue = 2.346;    
string displayString = someValue.ToString("0.00");

请注意,double.ToString(以及string.Format())使用远离零的中点舍入,因此0.125变为0.13。这通常是显示所需的行为。显然,这些字符串不应用于往返。

此方法也不适用于数学计算中所需的舍入(其中MidpointRounding.ToEven通常是最佳方法)。在这种情况下,应该使用Math.Round()。

答案 3 :(得分:5)

查看Math.Round