舍入到某个小数位

时间:2012-11-27 08:49:15

标签: c# rounding

我正在计算某些值的平均值。一切正常。 我想要做的是将double舍入到小数点后第二位。

e.g。

我将0.833333333333333333显示为 0.83

有没有这样做?

6 个答案:

答案 0 :(得分:9)

围绕double本身,如:

Math.Round(0.83333, 2, MidpointRounding.AwayFromZero);

(你应该定义MidpointRounding.AwayAwayFromZero来获得正确的结果。默认这个函数使用银行家四舍五入。阅读更多关于银行家四舍五入的信息:http://www.xbeat.net/vbspeed/i_BankersRounding.htm所以你可以看到为什么这不会给你正确的结果)< / p>

或者只是两位小数的显示值:

myDouble.ToString("F");

或者由#

的数量确定的任何小数
myDouble.ToString("#.##")

答案 1 :(得分:1)

你说显示为 - 所以这将是:

var d = value.ToString("f2");

请参阅Standard numeric format strings

如果您确实想将值调整为2dp,那么您可以执行@middelpat建议的内容。

答案 2 :(得分:1)

使用

Math.Round(decimal d,int decimals);

as

Math.Round(0.833333333,2); 

这将为您提供结果0.83

答案 3 :(得分:0)

double d = 0.833333333333333333;
Math.Round(d, 2).ToString();

答案 4 :(得分:0)

尝试

decimalVar = 0.833333333333333333;
decimalVar.ToString ("#.##");

答案 5 :(得分:-1)

如果您希望将0.85781..视为0.85,最简单的方法是乘以100,投放到int并除以100。< / p>

int val = (int)(0.833333333333333333 * 100); 
var result = val /100;

它应该产生你正在寻找的结果。