2010-07-09 3 views
13

Можно создать дубликат:
How to format a decimalКак ограничить десятичное число?

Как я могу ограничить мое десятичное число, так что я буду получать только 3 цифры после запятой?

e.g 2.774 
+4

для отображения? или потерять точность даже больше, чем вы уже с плавающей точкой ...? – gbn

ответ

37

Math.Round Method (Decimal, Int32)

Пример:

Math.Round(3.44, 1); //Returns 3.4. 
+6

Обратите внимание, что по умолчанию C# использует «Rounding Banker», который может быть не таким, каким вы хотите, поэтому существует метод перегрузки Math.Round (decimal, int, MidpointRounding), чтобы вы могли точно указать, какой метод округления использовать. Например. TSQL использует «Away From Zero» округление, поэтому может иметь другое значение, чем округление по C# по умолчанию. –

+0

благодарит за достоверную информацию –

1

Используйте Math.Round округлить его знаков после запятой.

1

Ограничение точности числа с плавающей запятой является концепцией SQL. Десятичное значение в csharp означает, что оно будет помнить о назначенной точности. Перед назначением вы можете округлить до трех знаков после запятой. IE, Math.Round().

10

Я предполагаю, что вы на самом деле означает его форматирования для вывода:

Console.WriteLine("{0:0.###}", value); 
1

Чтобы получить десятичный обратно использовать Math.Round с Второй параметр, определяющий количество знаков после запятой.

decimal d = 54.9700M;  
decimal f = (Math.Round(d, 2)); // 54.97 

получить строковое представление числа использования .ToString() Specifiying десятичных точек, как N3. Где 3 десятичные точки

decimal d = 54.9700M;  
string s = number.ToString("N3"); // "54.97" 
1

Часть моего ответа является ответом, другая часть просто интересный момент:

Я часто хочу видеть переменную как prop/field. Поэтому создайте extension method, чтобы решить мою проблему:

Tensao - это просто Enum, у которого есть значение.

public static class TensaoExtensions { 
     public static double TensaoNominal(this Tensao tensao) { 
      return Math.Round((double.Parse(EnumMapper.Convert(typeof(Tensao), 
          tensao.ToString()))) * 1000/Math.Sqrt(3), 3); 
     } 
    } 
Смежные вопросы