Es kommt darauf an. Wenn die Korrektheit der Berechnung davon abhängt, dass die Variablen zuvor gerundet wurden, ist das Formatieren der Ausgabe keine Option. Sie könnten halten Sie Ihre Erweiterungsmethode auf jeden Auftrag verwenden, aber das ist potenziell fehleranfällig (Sie können verpassen) oder Sie können eine Wrapper-Klasse erstellen:
public struct RoundedDecimal: IEquatable<RoundedDecimal>, IFormattable, IComparable<RoundedDecimal>
{
private readonly decimal value;
public RoundedDecimal(decimal value)
{
this.value = Math.Round(value, 2);
}
public static implicit operator RoundedDecimal(decimal value) =>
new RoundedDecimal(value);
public static explicit operator Decimal(RoundedDecimal value) =>
value;
public static RoundedDecimal operator *(RoundedDecimal left, RoundedDecimal right) =>
new RoundedDecimal(left.value * right.value);
//and so on
}
Wollen Sie ** ** jeder dezimal sein automagically um 2 Dezimalstellen gerundet und ignorieren danach jede Ziffer? – zdimension
ja, jede Dezimalstelle nach 2 Dezimalstellen sollte ignoriert werden –
Was möchten Sie tun, wenn Sie zwei Dezimalstellen hinzufügen? Sollten sie vor oder nach dem Hinzufügen abgeschnitten werden? –