Philippe Mori
Это не так Math.Round
работает. Обычно округление производится в определенной десятичной позиции. Таким образом, если вы укажете 1 десятичную дробь для округления, то, по сути, ответом будет ближайшее число с 1 десятичной дробью.
Затем у вас есть несколько вариантов, чтобы указать округление средней точки. Это, как правило, более полезно для финансовых приложений, чтобы уменьшить совокупную ошибку.
Если вы хотите округлить до определенного кратного, например 0,5, то вам придется добавить дополнительный код. Например, вы можете умножить на 2, округлить до единицы, а затем разделить на 2.
Вот код с одной операцией на строку и значением в комментарии.
var value = 10.45; // 10.45
value *= 2.0; // 20.90
value = Math.Round(value, 0); // 21.00
value /= 2.0; // 10.50
Однако как вы ожидаете, что 1.20 будет округлено до 1.50? С приведенным выше кодом он округлится до 1,00. Заменяющий
Math.Round
около
Math.Ceiling
возможно, это то, что вы хотите (однако вы не можете указать количество десятичных знаков).
Кроме того, вы можете добавить 0,5 перед вызовом
Math.Round
В этом случае округление средней точки может быть более важным.
Для получения информации о том, как работает округление, может быть полезно ознакомиться с документацией, поскольку она очень ясна в документации:
Перечисление MidpointRounding (Система)[
^]