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


Galileo Computing

5.6 Rechnen mit Einheiten: Java Units Specificatiotoptop

Die Java Units Specification (http://www.jcp.org/en/jsr/detail?id=108) beschreibt Einheiten – wie Meter, Kilogramm – und Konvertierungen zwischen diesen Einheiten sowie Größen und Dimensionen. 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://java-tutor.com/go/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) von Jean-Marie Dautelle unter http://jscience.org/, was neben den Einheiten auch noch andere APIs implementiert. Die Bibliothek bietet:

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.

J.A.D.E bindet sich in der aktuellen Version nicht mehr an die javax.units-Schnittstellen, sodass die Typen aus dem Paket org.jscience.physics.units zu nutzen sind:

Listing 5.4   UnitDemo.java

import org.jscience.physics.units.Converter;
import org.jscience.physics.units.NonSI;
import org.jscience.physics.units.SI;
import org.jscience.physics.units.Unit;
public class UnitDemo
{
  public static void main( String[] args )
  {
    Unit unitMeter = SI.METER;
    Unit unitMile  = NonSI.MILE;
    System.out.println( unitMeter.getSystemUnit() );  // m
    System.out.println( unitMile.getSystemUnit() );   // m
    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
  }
}

Damit das Beispiel mit J.A.D.E funktioniert, müssen die beiden Java-Archive jscience.jar sowie javolution.jar in den Klassenpfad mit aufgenommen werden.

 << 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