2010-07-09 3 views

Antwort

37

Math.Round Method (Decimal, Int32)

Beispiel:

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

Beachten Sie, dass C# standardmäßig "Banker's Rounding" verwendet, was möglicherweise nicht Ihren Vorstellungen entspricht. Daher gibt es eine Methode overload Math.Round (dezimal, int, MidpointRounding), mit der Sie genau angeben können, welche Rundungsmethode verwendet werden soll. Z.B. TSQL verwendet "Around From Zero" -Aufrundung, daher kann es einen anderen Wert als Standard-C# -Arundung geben. –

+0

danke für die wertvollen Informationen Herr –

1

Verwenden Math.Round es abzurunden, um Dezimalstellen.

1

Die Begrenzung der Genauigkeit einer Fließkommazahl ist ein SQL-Konzept. Dezimal in csharp bedeutet nur, dass es sich an die zugewiesene Genauigkeit erinnert. Sie können vor der Zuweisung auf drei Dezimalstellen runden. IE, Math.Round().

10

Ich gehe davon bedeuten Sie es wirklich für die Formatierung der Ausgabe:

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

Dezimal benutzen Sie zurück Math.Round mit der zweiten Parameter Anzahl der Dezimalstellen angeben.

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

Get String-Darstellung Zahl Verwendung .ToString() Dezimalstellen als N3 Einzelheiten enthält. Wo 3 die Dezimalpunkte ist

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

Teil meiner Antwort ist die Antwort, ist ein anderer Teil nur ein interessanter Punkt:

Ich möchte oft die Variable als prop/field sehen. So ein extension method erstellen, um mein Problem zu lösen:

Tensao ist nur eine Enum, die einen Wert haben.

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); 
     } 
    }