C# - 舍入整数除法

Oca*_*tes 4 c# math int rounding multidimensional-array

Windows,C#,VS2010.

我的应用有这个代码:

int[,] myArray=new int[10,2];
int result=0;
int x=0;
x++;
Run Code Online (Sandbox Code Playgroud)

如下所示,如果结果在10.0001和10.9999之间; 结果= 10

result= (myArray[x,0]+myArray[x+1,0])/(x+1); 
Run Code Online (Sandbox Code Playgroud)

我需要这个:如果结果> = 10 &&结果<10.5轮到10.如果结果> = 10.500 && <= 10.999轮到11.

请尝试以下代码.但没有奏效.

result= Math.Round((myArray[x,0]+myArray[x-1,0])/(x+1));
Run Code Online (Sandbox Code Playgroud)

错误:以下方法或属性之间的调用不明确:'System.Math.Round(double)'和'System.Math.Round(decimal)'

错误:无法将类型'double'隐式转换为'int'.存在显式转换(您是否错过了演员?)

result= Convert.ToInt32(Math.Round((myArray[x,0]+myArray[x-1,0])/(x+1)));
Run Code Online (Sandbox Code Playgroud)

错误:以下方法或属性之间的调用不明确:'System.Math.Round(double)'和'System.Math.Round(decimal)'

在此先感谢,ocaccy pontes.

Fab*_*amp 7

尝试

result= (int)Math.Round((double)(myArray[x,0]+myArray[x-1,0])/(x+1));
Run Code Online (Sandbox Code Playgroud)

这应该解决你的编译器错误.

第一个("错误:以下方法或属性之间的调用是不明确的:'​​System.Math.Round(double)'和'System.Math.Round(decimal)'")通过将被除数转换为a来解决double,其中"滑下",使该隔板的输出一个double避免精度损失.

您还可以将函数参数显式转换为a double以获得相同的效果:

Math.Round((double)((myArray[x,0]+myArray[x-1,0])/(x+1)));
Run Code Online (Sandbox Code Playgroud)

(注意括号的位置).

第二个错误("错误:无法将类型'double'隐式转换为'int'.存在显式转换(您是否缺少转换?)")通过显式转换返回值Math.Round来修复int.