我正在计算一些值的平均值。一切正常。我想要做的是将双精度数舍入到小数点后第二位。
例如
我会将 0.833333333333333333 显示为 0.83
有没有办法做到这一点?
像这样围绕double
自身:
Math.Round(0.83333, 2, MidpointRounding.AwayFromZero);
(您应该定义 MidpointRounding.AwayAwayFromZero 以获得正确的结果。默认此函数使用银行家舍入。阅读有关银行家舍入的更多信息:http: //www.xbeat.net/vbspeed/i_BankersRounding.htm以便您了解为什么这不会给你正确的结果)
或者只是两位小数的显示值:
myDouble.ToString("F");
或者对于由数量确定的任何小数#
myDouble.ToString("#.##")
利用
Math.Round(decimal d,int decimals);
作为
Math.Round(0.833333333,2);
这会给你结果0.83
。
double d = 0.833333333333333333;
Math.Round(d, 2).ToString();
尝试
decimalVar = 0.833333333333333333;
decimalVar.ToString ("#.##");
如果您想查看 0.85781..
为0.85
,最简单的方法是乘以100
、转换为int
和除以100
。
int val = (int)(0.833333333333333333 * 100);
var result = val /100;
它应该会产生您正在寻找的结果。