0

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

例如

我会将 0.833333333333333333 显示为 0.83

有没有办法做到这一点?

4

6 回答 6

9

像这样围绕double自身:

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

(您应该定义 MidpointRounding.AwayAwayFromZero 以获得正确的结果。默认此函数使用银行家舍入。阅读有关银行家舍入的更多信息:http: //www.xbeat.net/vbspeed/i_BankersRounding.htm以便您了解为什么这不会给你正确的结果)

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

myDouble.ToString("F");

或者对于由数量确定的任何小数#

myDouble.ToString("#.##")
于 2012-11-27T08:50:49.187 回答
1

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

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

请参阅标准数字格式字符串

如果您确实想将值调整为 2dp,那么您可以按照@middelpat 的建议进行操作。

于 2012-11-27T08:51:59.707 回答
1

利用

Math.Round(decimal d,int decimals);

作为

Math.Round(0.833333333,2); 

这会给你结果0.83

于 2012-11-27T08:52:57.913 回答
0
double d = 0.833333333333333333;
Math.Round(d, 2).ToString();
于 2012-11-27T08:52:57.737 回答
0

尝试

decimalVar = 0.833333333333333333;
decimalVar.ToString ("#.##");
于 2012-11-27T08:53:05.417 回答
-1

如果您想查看 0.85781..0.85,最简单的方法是乘以100、转换为int和除以100

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

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

于 2012-11-27T08:53:20.987 回答