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

Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5 (Tiger-Release)
Buch: Java ist auch eine Insel
gp Kapitel 5 Mathematisches
  gp 5.1 Arithmetik in Java
    gp 5.1.1 Java-Sondertypen im Beispiel
    gp 5.1.2 Soll eine Division durch Null zur Übersetzungszeit erkannt werden?
  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.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 BigDecimal
  gp 5.6 Rechnen mit Einheiten: Java Units Specification


Galileo Computing

5.6 Rechnen mit Einheiten: Java Units Specificatiotoptop

Die JSR-108 (Java Units Specification) beschreibt Möglichkeiten, wie Einheiten und Konvertierungen zwischen diesen Einheiten aussehen können. Im Zentrum stehen Größen, Dimensionen und Einheiten. Ein Beispiel:


Größe (mit Formelzeichen) Dimension SI-Einheit
Länge (l, s) L Meter (= 1/299 792 458 des Lichtweges in 1 s)
Zeit (t) T Sekunde (9 192 631 770 Perioden der 133 Cs-Uhr)
Masse (m) M Kilogramm (kg)
Elektrische Ladung (Q) Q = I · T Coulomb (C) = A · s

Die Dimension einer physikalischen Größe ist ihre Darstellung als Produkt der Basisgrößen. Die Webseite http://www.unc.edu/~rowlett/units/ listet eine gewaltige Zahl von Maßeinheiten auf und erklärt auch ihre Konvertierung.

Eine Implementierung der Java Units Specification ist J.A.D.E. (Java Addition to Default Environment) unter http://jade.dautelle.com/, was neben den Einheiten auch noch andere APIs implementiert. Es implementiert:

gp  Kompatibilität zwischen Einheiten
gp  Konvertierung der Größen
gp  Skalierung und arithmetische Operationen
gp  Standardeinheiten
gp  Parser für Einheiten

Die Klasse javax.units.SI beschreibt die Basisgrößen – etwa die Länge in der Basiseinheit Meter, eine Masse in Kilogramm, die Zeit in Sekunden usw. – und javax.units.NonSI, die nicht-SI Einheiten wie Knoten oder Yard. Die Einheit ist durch die Klasse javax.units.Unit zu beschreiben und javax.units.Converter ermöglichen die Umwandlung von einer Einheit zur anderen.

Listing 5.5   UnitDemo.java


import javax.units.Converter;
import javax.units.NonSI;
import javax.units.SI;
import javax.units.Unit;
import com.dautelle.JADE;

public class UnitDemo
{
  public static void main( String args[] )
  {
    // Vor der Benutzung von J.A.D.E. muss die Bibliothek
    // initialisiert werden.

    JADE.initialize();

    Unit unitMeter = SI.METER;
    Unit unitMile  = NonSI.MILE;

    System.out.println( unitMeter.getSystemUnit() );  // m
    System.out.println( unitMile.getSystemUnit() );   // mi


    boolean b = unitMile.isCompatible( unitMeter );   // true

    // 1 Mile  = 1609.344 Meter
    // 1 Meter = 0.0006214 Mile

    Converter conv = unitMeter.getConverterTo( unitMile );

    System.out.println( conv.convert(1000 /* m */ ) ); // 0.621371192237334
  }
}




Copyright © Galileo Press GmbH 2004
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, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de