C # - Math.Round - PullRequest
       11

C # - Math.Round

14 голосов
/ 05 октября 2009

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

Спасибо!

Ответы [ 5 ]

31 голосов
/ 05 октября 2009
Math.Round(yourNumber, 1)

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

13 голосов
/ 05 октября 2009

Вам просто нужно использовать перегрузку 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
8 голосов
/ 05 октября 2009

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

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

4 голосов
/ 05 октября 2009

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

decimal value = 10.75;
value.ToString ("#.#");
2 голосов
/ 05 октября 2009

Если вы просто хотите «вырезать» все после первого знака после запятой, эта работа должна:

   return Math.Round(value * 10)/10
...