С# - Math.Round

Я пытаюсь понять, как округлить до ближайшей десятой позиции с С#. Например, у меня есть значение типа double. В настоящее время этот двойник установлен на 10,75. Тем не менее, мне нужно округлить, а затем усечь все, что находится за десятую позицию. В этом случае я ищу значение 10.8. Как мне округлить до позиции десятых в С#?

Спасибо!

Ответ 1

Math.Round(yourNumber, 1)

Второй параметр - это число десятичных знаков для округления до. В вашем случае вы хотите, чтобы в качестве конечного результата было 1 десятичное место.

Ответ 2

Вам просто нужно использовать перегрузку Math.Round, которая принимает параметр decimals.

Math.Round(10.75, 1) // returns 10.8

Просто для сравнения:

Math.Round(10.75)    // returns 11
Math.Round(10.75, 0) // returns 11
Math.Round(10.75, 2) // returns 10.75

Ответ 3

Поскольку вы использовали Math.Round() в своем названии, я собираюсь предположить, что вы уже пробовали базовый подход Math.Round(10.75,1), и он возвращает то, чего вы не ожидаете. Имея это в виду, я предлагаю рассмотреть некоторые из разных перегрузок для функции, в частности, тот, который принимает MidPointRounding enum:

http://msdn.microsoft.com/en-us/library/f5898377.aspx

Ответ 4

Вам действительно нужно округлить его, или вы можете просто отформатировать его для печати, но позволить самой переменной держать свою точность? Что-то вроде:

decimal value = 10.75;
value.ToString ("#.#");

Ответ 5

Если вы просто хотите "вырезать" все после первого десятичного знака, эта работа shoudl:

   return Math.Round(value * 10)/10