Я предполагаю, что вы действительно имеете в виду форматирование для вывода:
Console.WriteLine("{0:0.###}", value);
Чтобы вернуть десятичное число, используйте Math.Round
со вторым параметром, определяющим количество десятичных знаков.
decimal d = 54.9700M;
decimal f = (Math.Round(d, 2)); // 54.97
Чтобы получить строковое представление числа, используйте .ToString ()
Указание десятичных точек как N3. Где 3 - десятичные точки
decimal d = 54.9700M;
string s = number.ToString("N3"); // "54.97"
Часть моего ответа - это ответ, другая часть - просто интересный момент:
Я часто хочу видеть переменную как prop/field
. Поэтому я создал метод расширения
, чтобы решить мою проблему:
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);
}
}
Ограничение точности числа с плавающей запятой - это концепция SQL. Decimal в csharp означает только то, что он будет помнить назначенную точность. Вы можете округлить до трех знаков после запятой перед присвоением. IE, Math.Round()
.
Используйте Math.Round
для округления до 3 десятичных знаков.