net.sf.trauma
Class Decimal

java.lang.Object
  extended by net.sf.trauma.Decimal

public class Decimal
extends java.lang.Object

Decimal - Verwalten von Dezimalzahlen mit vorgegebener Anzahl von Nachkommastellen.
Daten werden intern in long-Feldern gespeichert, d.h. es werden bis zu length(Long.MAX_VALUE) = length(9223372036854775807) = 19 Stellen verwaltet. Bei Verwendung von Multiplikation reduziert sich dies auf etwa 0.5*(length(Long.MAX_VALUE)) = 9 Stellen. Ueberlauf-Fehler werden weitergereicht. Lizensierungsart: GNU LGPL (darf in kommerziellen Projekten unverändert genutzt werden).

Version:
2008.04.11
Author:
Manuel Haim

Field Summary
private  int decimals
           
static int DEF_DECIMALS
          Standard-Anzahl von Nachkommastellen.
private  long numerator
           
private  boolean overflow
           
private  boolean roundNatural
          true um ab 5 aufzurunden, false um roundUp zu nutzen.
private  boolean roundUp
          true um alles aufzurunden, false um alles abzurunden.
 
Constructor Summary
Decimal()
          Erzeugen einer neuen Dezimalzahl mit Standard-Genauigkeit.
Decimal(Decimal d)
          Copy-Konstruktor.
Decimal(int decimals)
          Erzeugen einer neuen Dezimalzahl mit waehlbarer Genauigkeit.
Decimal(long numerator, int decimals)
          Erzeugen einer neuen Dezimalzahl mit waehlbarer Genauigkeit.
 
Method Summary
 void add(Decimal c)
          Addieren einer weiteren Dezimalzahl.
 void add(int i)
          Addieren einer int-Zahl.
private  long bias(long numerator, int delta)
          Verschieben des Kommas.
 void div(Decimal c)
          Teilen durch eine weitere Dezimalzahl.
 void div(int i)
          Teilen durch eine int-Zahl.
 long getFractionalPart()
          Abfragen des Nachkomma-Anteils.
 long getFractionalPart(int showDecimals, boolean signed)
          Abfragen des Nachkomma-Anteils.
 long getIntegerPart()
          Abfragen des Ganzzahl-Anteils.
 long getIntegerPart(int showDecimals)
          Abfragen des Ganzzahl-Anteils.
 boolean getOverflow()
          Abfrage, ob eine Rechenoperation einen Overflow ausloeste.
static void main(java.lang.String[] args)
           
 void mult(Decimal c)
          Multiplizieren mit einer weiteren Dezimalzahl.
 void mult(int i)
          Multiplizieren mit einer int-Zahl.
static Decimal parseDecimal(java.lang.String s)
          Umwandeln eines Strings in eine Dezimalzahl.
static Decimal parseDecimal(java.lang.String s, int decimals)
          Umwandeln eines Strings in eine Dezimalzahl.
private static long pow(long base, long exp)
          Potenzfunktion fuer int-Zahlen.
 Decimal rounded(int showDecimals)
          Runden der Dezimalzahl.
 void sub(Decimal c)
          Subtrahieren einer weiteren Dezimalzahl.
 void sub(int i)
          Subtrahieren einer int-Zahl.
 java.lang.String toString()
           
 java.lang.String toString(int showDecimals)
          Die Dezimalzahl als String.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEF_DECIMALS

public static final int DEF_DECIMALS
Standard-Anzahl von Nachkommastellen.

See Also:
Constant Field Values

numerator

private long numerator

decimals

private int decimals

overflow

private boolean overflow

roundNatural

private boolean roundNatural
true um ab 5 aufzurunden, false um roundUp zu nutzen.


roundUp

private boolean roundUp
true um alles aufzurunden, false um alles abzurunden. Wird ignoriert, wenn roundNatural == true ist.

Constructor Detail

Decimal

public Decimal()
Erzeugen einer neuen Dezimalzahl mit Standard-Genauigkeit.


Decimal

public Decimal(int decimals)
Erzeugen einer neuen Dezimalzahl mit waehlbarer Genauigkeit.

Parameters:
decimals - Anzahl der Nachkommastellen.

Decimal

public Decimal(Decimal d)
Copy-Konstruktor.

Parameters:
d - Eine Dezimalzahl.

Decimal

public Decimal(long numerator,
               int decimals)
Erzeugen einer neuen Dezimalzahl mit waehlbarer Genauigkeit.

Parameters:
numerator - Zaehler-Wert.
decimals - Anzahl der Nachkommastellen.
Method Detail

getOverflow

public boolean getOverflow()
Abfrage, ob eine Rechenoperation einen Overflow ausloeste.

Returns:
true falls overflow, andernfalls false.

getIntegerPart

public long getIntegerPart()
Abfragen des Ganzzahl-Anteils.

Returns:
Ganzzahl-Anteil (inklusive Vorzeichen).

getIntegerPart

public long getIntegerPart(int showDecimals)
Abfragen des Ganzzahl-Anteils.

Parameters:
showDecimals - Anzahl der Nachkommastellen (zwecks Rundung).
Returns:
Ganzzahl-Anteil (inklusive Vorzeichen, gerundet).

getFractionalPart

public long getFractionalPart()
Abfragen des Nachkomma-Anteils. Fuehrende Nullen gehen natuerlich verloren, die Zahl besteht tatsaechlich aus this.showDecimals Ziffern.

Returns:
Nachkomma-Anteil (mit Vorzeichen).

getFractionalPart

public long getFractionalPart(int showDecimals,
                              boolean signed)
Abfragen des Nachkomma-Anteils. Fuehrende Nullen gehen natuerlich verloren, die Zahl besteht tatsaechlich aus showDecimals Ziffern.

Parameters:
showDecimals - Anzahl der anzuzeigenden Nachkommastellen.
signed - Mit Vorzeichen.
Returns:
Nachkomma-Anteil (ggf mit Vorzeichen, gerundet).

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toString

public java.lang.String toString(int showDecimals)
Die Dezimalzahl als String.

Parameters:
showDecimals - Anzahl der anzuzeigenden Nachkommastellen.
Returns:
Die Dezimalzahl als String.

pow

private static long pow(long base,
                        long exp)
Potenzfunktion fuer int-Zahlen.

Parameters:
base - Basis.
exp - Exponent.
Returns:
Basis hoch Exponent.

bias

private long bias(long numerator,
                  int delta)
Verschieben des Kommas.

Parameters:
numerator - Der Zaehler-Wert.
delta - Anzahl Stellen (>0 nach rechts, <0 nach links).
Returns:
Der Zaehler-Wert nach der Verschiebung.

mult

public void mult(Decimal c)
Multiplizieren mit einer weiteren Dezimalzahl.

Parameters:
c - Die zweite Dezimalzahl.

mult

public void mult(int i)
Multiplizieren mit einer int-Zahl.

Parameters:
i - Die int-Zahl.

div

public void div(Decimal c)
Teilen durch eine weitere Dezimalzahl.

Parameters:
c - Die zweite Dezimalzahl.

div

public void div(int i)
Teilen durch eine int-Zahl.

Parameters:
i - Die int-Zahl.

add

public void add(Decimal c)
Addieren einer weiteren Dezimalzahl.

Parameters:
c - Die zweite Dezimalzahl.

add

public void add(int i)
Addieren einer int-Zahl.

Parameters:
i - Die int-Zahl.

sub

public void sub(Decimal c)
Subtrahieren einer weiteren Dezimalzahl.

Parameters:
c - Die zweite Dezimalzahl.

sub

public void sub(int i)
Subtrahieren einer int-Zahl.

Parameters:
i - Die int-Zahl.

parseDecimal

public static Decimal parseDecimal(java.lang.String s)
Umwandeln eines Strings in eine Dezimalzahl.

Parameters:
s - Der String.
Returns:
Die Dezimalzahl (Standard-Genauigkeit).

parseDecimal

public static Decimal parseDecimal(java.lang.String s,
                                   int decimals)
Umwandeln eines Strings in eine Dezimalzahl.

Parameters:
s - Der String.
decimals - Anzahl der Nachkommastellen.
Returns:
Die Dezimalzahl.

rounded

public Decimal rounded(int showDecimals)
Runden der Dezimalzahl.

Parameters:
showDecimals - Anzuzeigende Stellen.
Returns:
Die gerundete Dezimalzahl.

main

public static void main(java.lang.String[] args)