У меня проблема с округлением значения в c # Unit Testing - PullRequest
0 голосов
/ 21 октября 2019

Я новичок в 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);
            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...