Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 7 Elementare Datentypen
  gp 7.1 Der Datentyp int (Integer)
  gp 7.2 Variablen deklarieren
    gp 7.2.1 Erlaubte Bezeichner
  gp 7.3 C versus C++ bei der Deklaration von Variablen
  gp 7.4 Der Datentyp long
  gp 7.5 Der Datentyp short
  gp 7.6 Die Gleitpunkttypen float und double
    gp 7.6.1 Gleitpunkttypen im Detail
    gp 7.6.2 float im Detail
    gp 7.6.3 double im Detail
    gp 7.6.4 long double
    gp 7.6.5 Einiges zu n-stelliger Genauigkeit
  gp 7.7 Numerische Gleitpunktprobleme
  gp 7.8 Der Datentyp char
  gp 7.9 Nationale contra internationale Zeichensätze
  gp 7.10 Vorzeichenlos und vorzeichenbehaftet
  gp 7.11 Limits für Ganzzahl- und Gleitpunktdatentypen
  gp 7.12 Konstanten
    gp 7.12.1 Ganzzahlkonstanten
    gp 7.12.2 Gleitpunktkonstanten
    gp 7.12.3 Zeichenkonstanten
    gp 7.12.4 String-Literale (Stringkonstante)
  gp 7.13 Umwandlungsvorgaben für formatierte Ein–/Ausgabe


Galileo Computing - Zum Seitenanfang

7.7 Numerische Gleitpunktprobleme  toptop

Vorsicht ist geboten vor Ungenauigkeiten durch die binäre Darstellung von Gleitkommazahlen. Reelle Zahlen können im Gleitkommaformat nicht immer exakt dargestellt werden. Das liegt daran, dass die Gleitkommasemantik so implementiert ist, wie es der Prozessor berechnet. Würde man dafür eine extra Funktion für den Compiler schreiben, wäre die Berechnungsdauer systemabhängig. Würde die Berechnung beispielsweise bei einem Pentiumprozessor optimal ablaufen, könnte diese bei einem Athlon wiederum katastrophale Laufzeiten haben. Dadurch kann es bei der Berechnung von arithmetischen Ausdrücken zu Ungenauigkeiten kommen (wie weiter oben schon gezeigt wurde).


Achtung   Zahlen im Gleitkommaformat sollten nie auf Gleichheit überprüft werden!


Folgendes Programm wird in eine Endlosschleife laufen, da die Zahl 0.1 nie exakt dargestellt werden kann:

/* never_ending.c */
#include <stdio.h>
int main(void) {
   float i=0.0;
   for (i=0.0; i != 1.0; i += 0.1)
      printf("%f",i);
   return 0;
}

Sicherer ist es, wenn Sie dieses Beispiel so überprüfen:

/* equal_float.c */
#include <stdio.h>
int main(void) {
   float i=0.0;
   for (i=0.0; i < 0.9999 || i > 1.0001; i += 0.1)
      printf("%f",i);
   return 0;
}

Hinweis   Für den Fall, dass sich jemand näher mit der Gleitpunktdarstellung auf verschiedenen Systemen auseinander setzen will (muss), ein Link dazu: http://cch.loria.fr/documentation/IEEE754/numerical_comp_guide/index.html


 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de