Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Die Funktionsbibliothek
10 Threads und nebenläufige Programmierung
11 Raum und Zeit
12 Datenstrukturen und Algorithmen
13 Dateien und Datenströme
14 Die eXtensible Markup Language (XML)
15 Grafische Oberflächen mit Swing
16 Grafikprogrammierung
17 Netzwerkprogrammierung
18 Verteilte Programmierung mit RMI und Web-Services
19 JavaServer Pages und Servlets
20 Applets
21 Midlets und die Java ME
22 Datenbankmanagement mit JDBC
23 Reflection und Annotationen
24 Logging und Monitoring
25 Sicherheitskonzepte
26 Java Native Interface (JNI)
27 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Download: - ZIP, ca. 12,5 MB
Buch bestellen
Ihre Meinung?
<< zurück | Galileo Computing / <openbook> /Java-Insel | vor >>
Java ist auch eine Insel von Christian Ullenboom Programmieren mit der Java Standard Edition Version 6
Java ist auch eine Insel 7., aktualisierte Auflage geb., mit DVD (November 2007) 1.492 S., 49,90 Euro Galileo Computing ISBN 978-3-8362-1146-8 |
| 5 Mathematisches
|  | 5.1 Repräsentation ganzer Zahlen – das Zweierkomplement
|  | 5.2 Fließkommaarithmetik in Java
|  |  | 5.2.1 Mantisse und Exponent
|  |  | 5.2.2 Spezialwerte Unendlich, Null, NaN
|  | 5.3 Wertebereich eines Typs und Überlaufkontrolle
|  |  | 5.3.1 Behandlung des Überlaufs
|  | 5.4 Die Eigenschaften der Klasse Math
|  |  | 5.4.1 Attribute
|  |  | 5.4.2 Absolutwerte und Maximum/Minimum
|  |  | 5.4.3 Winkelfunktionen
|  |  | 5.4.4 Runden von Werten
|  |  | 5.4.5 Wurzel und Exponentialfunktionen
|  |  | 5.4.6 Der Logarithmus
|  |  | 5.4.7 Rest der ganzzahligen Division
|  |  | 5.4.8 Zufallszahlen
|  | 5.5 Mathe bitte strikt
|  |  | 5.5.1 Strikt Fließkomma mit strictfp
|  |  | 5.5.2 Die Klassen Math und StrictMath
|  | 5.6 Die Random-Klasse
|  |  | 5.6.1 Objekte aufbauen und der Seed
|  |  | 5.6.2 Zufallszahlen erzeugen
|  |  | 5.6.3 Pseudo-Zufallszahlen in der Normalverteilung
|  | 5.7 Große Zahlen
|  |  | 5.7.1 Die Klasse BigInteger
|  |  | 5.7.2 Funktionen von BigInteger
|  |  | 5.7.3 Ganz lange Fakultäten
|  |  | 5.7.4 Große Fließkommazahlen mit BigDecimal
|  |  | 5.7.5 Mit MathContext komfortabel die Rechengenauigkeit setzen
|  | 5.8 Zum Weiterlesen
## 5.5 Mathe bitte strikt Bei der Berechnung mit Fließkommazahlen schreibt die Definition des IEEE-754-Standards vor, wie numerische Berechnungen durchgeführt werden. Damit soll die CPU/FPU für float und double mit 32 beziehungsweise 64 Bit rechnen. In Wirklichkeit rechnet jedoch so gut wie kein mathematischer Prozessor mit diesen Größen, außer vielleicht AMD mit der 3Dnow!-Technologie. Auf der PC-Seite kommen Intel und AMD mit internen Rechengenauigkeiten von 80 Bit, also zehn Byte, zum Zuge. Dieses Dilemma betrifft aber nur 80x86- und andere CISC-Prozessoren. Bei RISC sind 32 Bit und 64 Bit das Übliche. Die 80-Bit-Lösung bringt in Java zwei Nachteile mit sich: Diese Genauigkeit kann Java bisher nicht nutzen. Wegen der starren IEEE-754-Spezifikation kann der Prozessor weniger Optimierungen durchführen, weil er sich immer eng an die Norm halten muss. Das kostet Zeit. Gegebenenfalls können aber die mathematischen Ergebnisse auf unterschiedlichen Maschinen anders aussehen. ### 5.5.1 Strikt Fließkomma mit strictfp Damit zum einen die Vorgaben der Norm erfüllt werden und zum anderen die Geschwindigkeit gewährleistet werden kann, lässt sich vor Klassen und Methoden der Modifizierer strictfp setzen, damit Operationen strikt nach der IEEE-Norm vorgehen. Ohne dieses Schlüsselwort (wie es also für unsere meisten Programme der Fall ist) nimmt die JVM eine interne Optimierung vor. Nach außen bleiben die Datentypen 32 Bit und 64 Bit lang, das heißt: bei den Konstanten in double und float ändert sich nichts. Zwischenergebnisse bei Fließkommaberechnungen werden aber eventuell mit größerer Genauigkeit berechnet. ### 5.5.2 Die Klassen Math und StrictMath Für strikte mathematische Operationen hat Sun die Klasse StrictMath deklariert. An der Klassendeklaration für StrictMath lässt sich ablesen, dass alle Methoden sich an die IEEE-Norm halten. Listing 5.8 java.lang.StrictMath.java, StrictMath
    public final strictfp class StrictMath {
     // ...
    }
Allerdings gibt es nicht zwei Implementierungen der mathematischen Funktionen – einmal strikt und genau beziehungsweise einmal nicht strikt, dafür potenziell schneller. Bisher delegiert die Implementierung für Math direkt an StrictMath. Listing 5.9 java.lang.Math.java, Math
    public final strictfp class Math
    {
      public static double tan( double a ) {
        return StrictMath.tan( a );
        // default impl. delegates to StrictMath
      }
      // ...
    }
Die Konsequenz ist, dass alle Funktionen wie Math.pow() strikt nach IEEE-Norm rechnen. Das ist zwar aus Sicht der Präzision und Übertragbarkeit der Ergebnisse wünschenswert, aber die Performance ist nicht optimal. ### Ihr Kommentar Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.
Name |
E-Mail |
Ihr Kommentar |
<< zurück | <top> | vor >>

Copyright © Galileo Press 2008
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