2010-07-09 15 views

Odpowiedz

37

Math.Round Method (Decimal, Int32)

przykład:

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

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#. –

+0

dzięki za cenne informacje, proszę pana –

1

Zastosowanie Math.Round zaokrąglić do miejsc po przecinku.

1

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().

10

Ja zakładając, że naprawdę oznacza formatowania go na wyjściu:

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

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" 
1

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); 
     } 
    } 
Powiązane problemy