Frage

C #, ich möchte eine Dezimalzahl formatiert werden, um nur die Anzeige auf zwei Dezimalstellen und dann werde ich diese Dezimalzahl nehmen und subtrahieren sie eine andere Dezimalzahl. Ich möchte in der Lage sein, dies zu tun, ohne es in einen String zu drehen zuerst zu formatieren und dann in eine Dezimalzahl umwandeln zurück. Es tut mir leid ich vergessen, dies zu spezifizieren, aber ich will nicht rund, ich möchte nur das letzte Komma abhacken. Gibt es eine Möglichkeit, dies zu tun?

War es hilfreich?

Lösung

Wenn Sie nicht das Dezimalsystem runden möchten, können Sie Decimal.Truncate verwenden. Leider kann es nur alle der Dezimalstellen gestutzt. Um dies zu lösen, könnte man mit 100 multiplizieren, gestutzt und teilen sich mit 100, wie folgt aus:

decimal d = ...;
d = Decimal.Truncate(d * 100) / 100;

Und man konnte eine Verlängerung Methode erstellen, wenn Sie es oft genug tun

public static class DecimalExtensions
{
  public static decimal TruncateDecimal(this decimal @this, int places)
  {
    int multipler = (int)Math.Pow(10, places);
    return Decimal.Truncate(@this * multipler) / multipler;
  }
}

Andere Tipps

Sie können mit: Math.Round(number,2); eine Zahl auf zwei Dezimalstellen runden

.

Siehe diese spezifische Überlastung von Math.Round für Beispiele .

Sie wollen nicht, es dann zu formatieren, aber es abzurunden. Versuchen Sie, die Math.Round Funktion.

Hier finden Sie aktuelle Math.Round

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top