Die C ++ Double-Precision Floating Point Variable

Die Standard-Floating-Point-Variable in C ++ ist seine größeren Geschwister, die Doppelte Genauigkeit

Menu

Floating-Point oder einfach doppelt. Sie deklarieren eine doppeltgenaue Gleitkomma wie folgt:

Doppel dValue1-double dValue2 = 1,5-

Die Einschränkungen des int Variable in C ++ sind inakzeptabel in einigen Anwendungen. Glücklicherweise versteht C ++ Dezimalzahlen, die einen Bruchteil haben. (Mathematiker nennen diese reale Nummern.) In C ++ sind Dezimalzahlen genannt Gleitkommazahlen oder einfach Schwimmer. Dies liegt daran, die Dezimalstelle um von links nach rechts schwimmen kann gebrochene Werte zu handhaben.

Floating-Point-Variablen kommen in zwei grundlegende Aromen in C ++. Die kleine Auswahl wird über das Schlüsselwort erklärt schweben wie folgt:

fValue1 schweben - // deklarieren ein schwebendes pointfloat fValue2 = 1,5- // es bei der Deklaration initialisieren

Die Lösung des Problems Abschneiden

Um zu sehen, wie die doppelt den Durchschnitt der drei Floating-Point-Variablen fixiert unser Abschneiden Problem, betrachten dValue1, dValue2, und dValue3 durch die Formel

Doppel DBMITTELWERT = dValue1 / 3.0 + dValue2 / 3.0 + dValue3 / 3,0-

Nehmen wir noch einmal die Ausgangswerte von 1,0, 2,0 und 2,0. Dies macht den Ausdruck gerade hier als gleichwertig gegeben

Doppel DBMITTELWERT = 1.0 / 3.0 + 2.0 / 3.0 + 2.0 / 3.0-

welches seinerseits entspricht

Doppel DBMITTELWERT = 0,333 ... + 0,6666 ... + 0,6666 ...-

was zu einem Endwert von

Doppel DBMITTELWERT = 1,666 ...-

Die vorstehenden Ausdrücke geschrieben werden, als ob es eine unendliche Anzahl von Sechser nach dem Komma waren. In der Tat ist dies nicht der Fall. Die Genauigkeit eines Doppel wird auf etwa 14 signifikanten Stellen begrenzt. Der Unterschied zwischen 1,666666666666 und 1 2/3 ist gering, aber nicht Null.

Wenn eine ganze Zahl keine ganze Zahl ist

C ++ geht davon aus, dass eine Reihe von einem Komma gefolgt ist eine Fließkomma konstant. So geht davon aus, dass 2,5 eine Floating-Point ist. Dieser Dezimal-Punkte-Regel gilt auch, wenn der Wert auf der rechten Seite des Dezimalpunktes ist Null. So 3.0 ist auch eine Floating-Point. Die Unterscheidung zwischen 3 und 3,0 sieht man kleine, aber nicht beschränkt auf C ++.

Eigentlich müssen Sie nichts nach rechts vom Komma setzen. So C ++ sieht auch 3. als doppelt. Allerdings ist es guter Stil als die 0 nach dem Komma für alle Gleitkommakonstanten aufzunehmen.

Computerfreaks wird daran interessiert sein zu wissen, dass die internen Darstellungen von 3 und 3,0 total unterschiedlich sind (gähn). Noch wichtiger ist, die Konstante int 3 unterliegt int Regeln, während 3.0 ist an die Regeln der Fließkommaarithmetik unterliegen.

So sollten Sie versuchen, Ausdrücke wie folgt zu vermeiden:

Doppel dValue = 1,0-Doppel dOneThird = dValue / 3-

Technisch ist das, was als bekannt Mischform Ausdruck, weil dValue ist ein doppelt aber 3 eine int. Okay, C ++ ist kein totaler Idiot - es weiß, was man in einem Fall wie diesem wollen, so ist es wandelt die 3 ein doppelt und führt Gleitkomma-Arithmetik.

Es gibt einen Namen für diese wenig Magie: C ++ fördert das int 3 a doppelt. C ++ können Sie auch einen Floating-Point-Ergebnis ein zuweisen int Variable:

int nValue = dValue / 3,0-

Zuweisen einer doppelt zu einem int wird als ein bekannter Degradierung.

Some C ++ Compiler erzeugt eine Warnung, wenn eine Variable zu fördern. Alle C ++ Compiler erzeugt eine Warnung (oder Fehler), wenn ein Ergebnis durch den Verlust an Präzision zu degradieren.

Sie sollten in der Gewohnheit zu vermeiden, Mixed-Mode-Arithmetik zu bekommen. Wenn Sie den Typ eines Ausdrucks zu ändern, tun Sie es explizit durch eine Besetzung mit, wie im folgenden Beispiel:

Leere fn (int Narg) {// berechnen ein Drittel der nArg- eine Besetzung verwenden, um es zu einem schwebenden pointdouble dOneThird = (double) Narg / 3.0 // fördern - // ... Funktion weiter

Die Namenskonvention des Beginnens mit doppelter Genauigkeit Doppel Variablen mit dem Buchstaben d wird hier verwendet. Das ist nur eine Konvention. Sie können Ihre Variablen beliebig benennen Sie mögen - C ++ kümmert sich nicht.

Menü