2016-04-10 8 views
1

in diesem BeispielcodeWie erhöht man die Präzision des doppelten Typs für große Zahlen?

double number = 2646849856355434345; 
Console.WriteLine(number % 5); 

Wenn ich doppelt für diesen Vorgang verwenden, wird es keine genaue Antwort geben. Hier wird "1" ausgegeben, wo es "0" ausgeben soll.

Gibt es trotzdem die Genauigkeit für große Doppelzahl zu erhöhen?

Hinweis: Ich weiß über BigInteger und ich kann sie verwenden, aber BigInteger dauert lange und ich frage mich, ob ich die gleiche Präzision mit Doppel haben kann.

+1

Wie wäre es 'Decimal' mit? Ich glaube, es hat eine größere Präzision als 'Double'. –

+1

Ja, Dezimal hat etwa 29 Stellen Genauigkeit. –

+1

Sie können den Datentyp "double" nicht ändern, Sie können nur zu einem anderen Datentyp wechseln. –

Antwort

3

können Sie Decimal verwenden.

Es ist geeignet für finanzielle und monetäre Berechnungen. Doppel basiert auf dem IEEE-Standard für Gleitkomma-Arithmetik (IEEE 754).

Wenn Sie die Unterschiede zwischen binären Gleitkomma- und Gleitkommadar- lesen Sie die folgenden Artikel (reference) wissen wollen.

Binary floating point (float/double)
Decimal floating point (dezimal)

1

Double sollte nicht für Operationen verwendet werden, die Dezimalgenauigkeit benötigen, sollten Sie die Decimal Datentyp für Dezimalarithmetik verwenden.

Der Datentyp Double ist präzise nur für binäre Arithmetik, da er auf binären Gleitkommazahlen basiert, ist es unmöglich, dass er für Dezimalarithmetik 100% genau ist.