Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 四舍五入到某个小数位_C#_Rounding - Fatal编程技术网

C# 四舍五入到某个小数位

C# 四舍五入到某个小数位,c#,rounding,C#,Rounding,我正在计算一些值的平均值。一切正常。 我要做的是将双精度四舍五入到小数点后第二位 e、 g 我会将0.833333显示为 0.83 还有什么方法可以这样做吗?像这样绕双圈: Math.Round(0.83333, 2, MidpointRounding.AwayFromZero); 您应该从零开始定义middpointRounding.awayAway以获得正确的结果。默认情况下,此函数使用四舍五入。阅读更多关于银行家取整的信息:这样你就能明白为什么这不能给你正确的结果 或者仅显示两位小数的显

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

e、 g

我会将0.833333显示为 0.83

还有什么方法可以这样做吗?

像这样绕双圈:

Math.Round(0.83333, 2, MidpointRounding.AwayFromZero);
您应该从零开始定义middpointRounding.awayAway以获得正确的结果。默认情况下,此函数使用四舍五入。阅读更多关于银行家取整的信息:这样你就能明白为什么这不能给你正确的结果

或者仅显示两位小数的显示值:

myDouble.ToString("F");
或由数字确定的任何小数

您说显示为-所以应该是:

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

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

使用

Math.Round(decimal d,int decimals);
作为

这将得到0.83的结果。

试试看

如果你想看到0.85781。。作为0.85,最简单的方法是乘以100,转换为int并除以100


它应该会产生您想要的结果。

这并不总是正确的。看看银行家舍入:您应该指定第三个参数middpointrounding。AwayFromZero@middelpat:标准方法为.ToEven,根据IEEE标准,这是正确的。这不是否决投票的好理由。这并不总是正确的。看看银行家舍入:xbeat.net/vbspeed/i_banker舍入.htm您应该指定第三个参数middpointrounding。AwayFromZero@middelpat:标准方法为.ToEven,根据IEEE标准,这是正确的。这不是否决投票的好理由。我没有否决投票,只是添加了一条评论。下一票是其他人。@middelpat-是的,有人来到这个线程,并对许多有效答案下一票……默认值是MidPointRounding.ToEven。这符合IEEE标准。因此,它应该是单独的,即默认值。@MilindThakkar它取决于应用程序-我见过一家公司有一个自动计费系统,需要为不同的供应商提供不同的取整方案。任何一种舍入方法都可能是正确的,但这需要Duncan知道并选择。这与显示值无关,将在0.857上失败,将返回0.86,而不是OP:@Tigran要求的0.85。如果输入为0.857,它确实会给出0.86。但不要求通过该输入给出0.85。他的例子显示的是0.8333,它不表示必须截断或舍入。你想得到一个双精度还是一个字符串?
Math.Round(decimal d,int decimals);
Math.Round(0.833333333,2); 
double d = 0.833333333333333333;
Math.Round(d, 2).ToString();
decimalVar = 0.833333333333333333;
decimalVar.ToString ("#.##");
int val = (int)(0.833333333333333333 * 100); 
var result = val /100;