我正在计算某些值的平均值。一切正常。 我想要做的是将double舍入到小数点后第二位。
e.g。
我将0.833333333333333333显示为 0.83
有没有这样做?
答案 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;
它应该产生你正在寻找的结果。