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

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 5 Mathematisches
  gp 5.1 Arithmetik in Java
    gp 5.1.1 Java-Sondertypen im Beispiel
  gp 5.2 Die Funktionen der Math-Klasse
    gp 5.2.1 Attribute
    gp 5.2.2 Winkelfunktionen – trigonometrische Funktionen und Arcus–Funktionen
    gp 5.2.3 Runden von Werten
    gp 5.2.4 Wurzel und Exponentialfunktionen
    gp 5.2.5 Der Logarithmus
    gp 5.2.6 Rest der ganzzahligen Division
    gp 5.2.7 Absolutwerte und Maximum/Minimum
    gp 5.2.8 Zufallszahlen
    gp 5.2.9 Der nächste Bitte
  gp 5.3 Mathe bitte strikt
    gp 5.3.1 Strikt Fließkomma mit strictfp
    gp 5.3.2 Die Klassen Math und StrictMath
  gp 5.4 Die Random-Klasse
  gp 5.5 Große Zahlen
    gp 5.5.1 Die Klasse BigInteger
    gp 5.5.2 Funktionen von BigInteger
    gp 5.5.3 Ganz lange Fakultäten
    gp 5.5.4 Große Fließkommazahlen mit BigDecimal
    gp 5.5.5 Komfortabel die Rechengenauigkeit setzen mit MathContext
  gp 5.6 Rechnen mit Einheiten: Java Units Specification
  gp 5.7 Weitere Klassen für mathematische Probleme

Kapitel 5 Mathematisches

Vieles hätte ich verstanden, wenn man es mir nicht erklärt hätte. – Stanislaw Jerzy Lec


Galileo Computing

5.1 Arithmetik in Javdowntop

Zahlen mit Komma nennen sich Gleitkomma-, Fließkomma-, Fließpunkt- oder Bruchzahlen. Der Begriff »Gleitkommazahl« kommt daher, dass die Zahl durch das Gleiten (Verschieben) des Dezimalpunkts als Produkt aus einer Zahl und einer Potenz der Zahl 10 dargestellt wird (also 1,23 = 123 * 10–  ).

Java unterstützt für Fließkommazahlen die Typen float und double, die sich nach der Spezifikation IEEE 754 richten. Ein float hat die Länge von 32 Bit und ein double die Länge von 64 Bit. Die Rechenoperationen sind ebenso im IEEE-Standard »Binary and Floating-Point Arithmetic« definiert. Neben den unterschiedlichen Größen für double und float definiert das IEEE aber noch positive und negative Zahlen sowie auch eine positive oder negative Null, positives und negatives Unendlich (engl. infinity) und mehrere Zahlen, die eigentlich gar keine sind. Es handelt sich hierbei um NaN, die Abkürzung für Not-a-Number. Sie werden als Fehlerindikator für das Ergebnis von undefinierten Rechenoperationen benutzt, etwa 0/0. NaN ist als Konstante in den Klassen Double und Float eingefügt, zum Beispiel für doppelt genaue Fließkommazahlen:

public static final double NaN = 0.0 / 0.0;

Außer für den Wert NaN ist auf allen Fließkommazahlen eine totale Ordnung definiert, das heißt, sie lassen sich von der kleinsten Zahl bis zur größten aufzählen. Am Rand steht die negative Unendlichkeit, dann folgen die negativen Zahlen, negative Null, positive Null, positive Zahlen und positives Unendlich. Die positive Null (+0.0) und die negative Null (–0.0) werden nicht unterschieden und sind gleich (0.0 == –0.0). So ist auch 0.0 > –0.0 falsch. Dennoch gibt es einen kleinen Unterschied, den wir anhand der Rechnung 1.0 / –0.0 und 1.0 / 0.0 leicht erkennen, da durch den Grenzwert das Ergebnis einmal gegen negativ unendlich und einmal gegen positiv unendlich geht.

Bleibt nur noch die einzige unsortierte Zahl NaN. Alle numerischen Vergleiche <, <=, >, >= mit NaN liefern false. Der Vergleich mit == ist false, wenn einer der Operatoren NaN ist. != verhält sich umgekehrt, ist also true, wenn einer der Operatoren NaN ist.

Ein Problem mit NaN ist, dass ein durchschnittlicher numerischer Prozessor eine Vielzahl verschiedener NaN-Gründe kennt, die in Java einfach auf einen einzigen NaN-Wert abgebildet werden.


Galileo Computing

5.1.1 Java-Sondertypen im Beispiel  toptop

Wir wollen in einigen Beispielen ein negatives/positives Unendlich und eine Null sowie ein NaN erzeugen:


Berechnung Deutung Ergebnis String-Repräsentation
1E300 * 1E20 Positiv unendlich Überlauf Infinity
–1E300 * 1E20 Negativ unendlich Überlauf -Infinity
1E-322 * 0.0001 Positive 0 Unterlauf 0.0
1E-322 * –0.0001 Negative 0 Unterlauf –0.0
0.0 / 0.0 Not a Number Undefiniert NaN

Das Minimum für double-Werte liegt bei etwa 10^-324 und das Maximum bei etwa 10^308.


Hinweis   Die Anzeige des Über-/Unterlaufs und des undefinierten Ergebnisses gibt es nur bei Fließkommazahlen, nicht aber bei Ganzzahlen.

 << zurück




Copyright © Galileo Press GmbH 2005
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 GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de