C# Округление значений

Писал алгоритм для работы метода Гаусса(задача с сайта) и столкнулся со следующей проблемой - по мере преобразования строк, погрешность накапливается и, как итог, конечный ответ разнится от ответа, обозначенного в тестах. Пробовал округлять следующим образом

var multiplier = -newMatrix[j][i] / newMatrix[suitableStringIndex][i];
                    for (int k = 0; k < newMatrix[j].Length; k++)
                        newMatrix[j][k] = Math.Round(newMatrix[suitableStringIndex][k] * multiplier + newMatrix[j][k], 9);

Здесь multiplier отвечает за число, на которое я домножаю исходную строку для получения нулей в следующей. Текст ошибки:

Equation #1 is not satisfied
  Expected: -40660.0d +/- 0.001d
  But was:  -40660.001270580571d

Как можно уложиться в погрешность 0.01? Пробовал в Math.Round округлять до большего кол-ва знаков - всё равно не проходит эту погрешность в 0.01


Ответы (1 шт):

Автор решения: Yotic

Math.Ceiling - округление до меньшего.

var multiplier = -newMatrix[j][i] / newMatrix[suitableStringIndex][i];
for (int k = 0; k < newMatrix[j].Length; k++)
   newMatrix[j][k] = Math.Ceiling(newMatrix[suitableStringIndex][k] * multiplier + newMatrix[j][k], 9);
→ Ссылка