Я новичок в c # и у меня проблема с округлением значения в модульном тестировании c #.
Я использую Aspose.Cells для манипулирования электронной таблицей. Моя цель - найти скользящее среднее для конкретного столбца.
Функция Math.Round () - округление значений, как и ожидалось, однако я хочу получить более конкретный вывод.
Например,,
Среднее значение 2,36 и 5,41 составляет 3,885
Math.Round (3,885, 2) = 3,85
Если применить ту же формулу к другой ячейке, значение которой33,3 и 25,4, среднее значение для этих значений 29,35
Math.Round (25,35,2) = 25,35
25,35 является правильным, но я хочу, чтобы результат показывал 25,4, а не 25,35. Может кто-нибудь помочь, пожалуйста, как написать код, чтобы получить такой результат?
Вот мой код.
public static void MovingAverageTest(string PathToMyExcel)
{
Workbook wb = new Workbook(PathToMyExcel); //Open Excel file.
Worksheet worksheet = wb.Worksheets[0]; //Get the first worksheet.
Cells cells = worksheet.Cells; //Get cells
int rowCount = cells.MaxDataRow; // Get row and column count
int columnCount = cells.MaxDataColumn;
for (int coloumnValue = 5; coloumnValue <= columnCount; coloumnValue++)
{
int test_Row_Startfrom = rowCount;
//int test_Row_Upto = 18;
string coloumnIndex = GetExcelColumnName(coloumnValue);
var formulaToFind_MovingAvg = @"=AVERAGE(" + coloumnIndex + test_Row_Startfrom + ":" + coloumnIndex + rowCount+1 + ")";
var result_value_MovingAvg = worksheet.CalculateFormula(formulaToFind_MovingAvg);
double convertedResult = Math.Round(Convert.ToDouble(result_value_MovingAvg), 2, MidpointRounding.AwayFromZero);
Console.WriteLine(convertedResult);
Cell cell = worksheet.Cells[coloumnIndex + "10"];
string value = cell.Value.ToString();
double convertedCellValue = Math.Round(Convert.ToDouble(value), 2);
Console.WriteLine(convertedCellValue);
if (convertedResult != convertedCellValue)
{
Console.WriteLine("Please check moving average value of the coloumn index {0}", coloumnIndex);
}
}