Powiel możliwe:
How to format a decimalJak ograniczyć liczbę dziesiętną?
Jak mogę ograniczyć moje liczbę dziesiętną więc będę miał tylko 3 cyfry po kropce?
e.g 2.774
Powiel możliwe:
How to format a decimalJak ograniczyć liczbę dziesiętną?
Jak mogę ograniczyć moje liczbę dziesiętną więc będę miał tylko 3 cyfry po kropce?
e.g 2.774
Zauważ, że domyślnie C# używa "zaokrąglania bankiera", które może nie być tym, czego potrzebujesz, więc istnieje przeciążenie metody Math.Round (dziesiętne, int, MidpointRounding), aby pozwolić ci dokładnie określić używaną metodę zaokrąglania. Na przykład. TSQL używa zaokrąglania "Od zera", więc może dawać inną wartość niż domyślne zaokrąglenie C#. –
dzięki za cenne informacje, proszę pana –
Zastosowanie Math.Round
zaokrąglić do miejsc po przecinku.
Ograniczenie precyzji liczby zmiennoprzecinkowej to koncepcja SQL. Dziesiętny w csharp oznacza tylko, że zapamięta przypisaną precyzję. Możesz zaokrąglić do trzech miejsc po przecinku przed przypisaniem. IE, Math.Round()
.
Ja zakładając, że naprawdę oznacza formatowania go na wyjściu:
Console.WriteLine("{0:0.###}", value);
Aby uzyskać dziesiętny z powrotem używać Math.Round
z drugiej parametr określający liczbę miejsc po przecinku.
decimal d = 54.9700M;
decimal f = (Math.Round(d, 2)); // 54.97
uzyskać reprezentację ciąg użytku numer .ToString()
Specifiying dziesiętne Punkty jako N3. Gdzie 3 punkty dziesiętne
decimal d = 54.9700M;
string s = number.ToString("N3"); // "54.97"
Część moją odpowiedź jest odpowiedzią, inna część jest po prostu ciekawy punkt:
często chcą zobaczyć zmienną jako prop/field
. Stwórz więc extension method
, aby rozwiązać mój problem:
Tensao to po prostu wyliczenie, które ma wartość powiązaną.
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);
}
}
na wyświetlaczu? lub stracić precyzję jeszcze bardziej niż w przypadku zmiennoprzecinkowych ...? – gbn