Hallo, ich frage mich, gibt es eine Klasse in .Net, die verwendet wird, um genaue Zahlen ohne Rundungsfehler zu berechnen?
Das ist zum Beispiel nicht das, was ich will:
decimal dividend = Decimal.One;
decimal divisor = 3;
dividend/divisor * divisor // gives us 0.9999999999999999999999999999 instead of 1
Ich habe mir überlegt, ob es eine Zahlenklasse gibt, die Puffer bis zu dem Zeitpunkt, an dem wir sie anzeigen müssen, mit anderen Worten, es würde wie folgt aussehen:
Num n = new Num(1);
n.DivideBy(3);
n.MultiplyBy(3);
n.toString(); // gives us "1"
Num n2 = new Num(n);
n2.DivideBy(3);
int decimal_places = 8;
n2.RoundHalfUp(decimal_places);
n2.toString(); // gives us "0.33333333"
Natürlich ist dies nur ein Beispiel für eine Implementierung. Im Grunde geht es hier darum, dass ich eine Klasse suche, die keine Rundungsfehler aufweist (normalerweise durch Verzögerung der Berechnungen bis zum letzten Moment).
Ich verstehe, dass die Leistung langsamer sein würde als Double
ou Decimal
. Aber sie muss nicht blindlings Berechnungen anstellen, solange sie sich innerhalb akzeptabel Zeit.