Geldbetrag

open class Geldbetrag @JvmOverloads constructor(betrag: Number, currency: CurrencyUnit, context: MonetaryContext = FACTORY.getMonetaryContextOf(betrag)) : MonetaryAmount, Comparable<MonetaryAmount> , KFachwert

Diese Klasse unterstuetzt den JSR 354 und das MonetaryAmount Interface, das Bestandteil von Java 9 ist. Da in alten Anwendungen oftmals ein BigDecimal verwendet wurde, wird auch diese Schnittstelle weitgehende unterstützt. Einzige Unterschied ist die MonetaryAmount.stripTrailingZeros-Methode, die einen anderen Rueckgabewert hat. Deswegen ist diese Klasse auch nicht von BigDecimal abgeleitet...

Im Gegensatz zur org.javamoney.moneta.Money- und org.javamoney.moneta.FastMoney-Klasse kann diese Klasse ueberschrieben werden, falls anderes Rundungsverhalten oder eine angepasste Implementierung benoetigt wird.

Author

oboehm

Since

1.0 (18.07.2018)

Constructors

Link copied to clipboard
constructor(betrag: Long)

Erzeugt einen Geldbetrag in der aktuellen Landeswaehrung.

constructor(betrag: Double)

Erzeugt einen Geldbetrag in der aktuellen Landeswaehrung.

constructor(betrag: String)

Erzeugt einen Geldbetrag in der aktuellen Landeswaehrung.

constructor(other: MonetaryAmount)

Dies ist zum einen der CopyConstructor als Ersatz fuer eine clone-Methode, zum anderen wandelt es einen MonetaryAmount in ein GeldBetrag-Objekt.

constructor(betrag: Number, currency: Currency? = Waehrung.DEFAULT_CURRENCY)

Erzeugt einen Geldbetrag in der angegebenen Waehrung.

constructor(betrag: Number, currency: CurrencyUnit, context: MonetaryContext = FACTORY.getMonetaryContextOf(betrag))

Types

Link copied to clipboard
object Companion
Link copied to clipboard
class Validator : KSimpleValidator<String>

Dieser Validator ist fuer die Ueberpruefung von Geldbetraegen vorgesehen.

Functions

Link copied to clipboard
open override fun abs(): Geldbetrag

Returns a MonetaryAmount whose value is the absolute value of this MonetaryAmount, and whose scale is this.scale().

Link copied to clipboard
open override fun add(other: MonetaryAmount?): Geldbetrag

Liefert die Summe mit dem anderen Gelbetrag zurueck. Vorausgesetzt, beide Betraege haben die gleichen Waehrungen. Einzige Ausnahem davon ist die Addition von 0, da hier die Waehrung egal ist (neutrale Operation).

Link copied to clipboard
open operator override fun compareTo(other: MonetaryAmount): Int

Vergleicht die Zahlenwerter der beiden Geldbetraege. Aber nur, wenn es sich um die gleiche Waehrung handelt. Ansonsten wird die Waehrung als Vergleichswert herangezogen. Dies fuehrt dazu, dass "CHF 1 < GBP 0" ist. Dies ist leider durch das TCK so vorgegeben :-(

operator fun compareTo(other: Number): Int

Vergleicht nur den Zahlenwert und ignoriert die Waehrung. Diese Methode ist aus Kompatibiltaetsgruenden zur BigDecimal-Klasse enthalten.

Link copied to clipboard
open override fun divide(divisor: Double): MonetaryAmount
open override fun divide(divisor: Long): Geldbetrag
open override fun divide(divisor: Number?): Geldbetrag

Returns a MonetaryAmount whose value is this / divisor, and whose preferred scale is this.scale() - divisor.scale(); if the exact quotient cannot be represented an ArithmeticException is thrown.

Link copied to clipboard
open override fun divideAndRemainder(divisor: Double): Array<Geldbetrag>
open override fun divideAndRemainder(divisor: Long): Array<Geldbetrag>

Liefert ein zwei-elementiges Geldbatrag-Array mit dem Ergebnis divideToIntegralValue undremainder.

open override fun divideAndRemainder(divisor: Number?): Array<Geldbetrag>

Liefert ein zwei-elementiges Geldbetrag-Array mit dem Ergebnis divideToIntegralValue undremainder.

Link copied to clipboard
open override fun divideToIntegralValue(divisor: Double): Geldbetrag
open override fun divideToIntegralValue(divisor: Long): Geldbetrag
open override fun divideToIntegralValue(divisor: Number): Geldbetrag

Liefert den Integer-Teil des Quotienten this / divisor (abgerundet).

Link copied to clipboard

Liefert nur die Zahl als 'double' zurueck. Sie entspricht der gleichnamigen Methode aus BigDecimal.

Link copied to clipboard
open operator override fun equals(other: Any?): Boolean

Zwei Betraege sind gleich, wenn Betrag und Waehrung gleich sind. Im Unterschied zu .isEqualTo wird hier nur der sichtbare Teil fuer den Vergleich herangezogen, d.h. Rundungsdifferenzen spielen beim Vergleich keine Rolle.

Link copied to clipboard
fun format(pattern: String): String

Falls die diversen toXxxString()-Methoden nicht ausreichen, kann man hier das Format selbst bestimmen. Folgende 'pattern' sind fuer den Betrag moeglich:

Link copied to clipboard

Waehrend #getNumber() den Nachkommawert auf 4 Stellen ausgibt, gibt diese Methode den Betrag auf 2 Nachkommastellen gerundet aus.

Link copied to clipboard
open override fun getContext(): MonetaryContext

Gibt den MonetaryContext des Geldbetrags zurueck. Der MonetaryContext enthaelt Informationen ueber numerische Eigenschaften wie Anzahl Nachkommastellen oder Rundungsinformation.

Link copied to clipboard
open override fun getCurrency(): CurrencyUnit

Liefert die entsprechende Waehrungseinheit (CurrencyUnit).

Link copied to clipboard
open override fun getFactory(): GeldbetragFactory

Erzeugt eine neue @code GeldbetragFactory}, die @link CurrencyUnit}, den numerischen Werte und den aktuellen MonetaryContext verwendet.

Link copied to clipboard
open override fun getNumber(): NumberValue

Liefert den entsprechenden NumberValue.

Link copied to clipboard
open override fun hashCode(): Int

Hash-Code.

Link copied to clipboard
open override fun isEqualTo(other: MonetaryAmount): Boolean

Zwei Geldbetraege sind nur dann gleich, wenn sie die gleiche Waehrung und den gleichen Betrag haben. Im Unterschied zu .equals muessen die Betraege exakt gleich sein.

Link copied to clipboard
open override fun isGreaterThan(amount: MonetaryAmount): Boolean

Vergleicht zwei Instanzen von MonetaryAmount. Nicht signifikante Nachkommastellen werden dabei ignoriert.

Link copied to clipboard
open override fun isGreaterThanOrEqualTo(amount: MonetaryAmount): Boolean

Vergleicht zwei Instanzen von MonetaryAmount. Nicht signifikante Nachkommastellen werden dabei ignoriert.

Link copied to clipboard
open override fun isLessThan(amount: MonetaryAmount): Boolean

Vergleicht zwei Instanzen von MonetaryAmount. Nicht signifikante Nachkommastellen werden dabei ignoriert.

Link copied to clipboard
open override fun isLessThanOrEqualTo(amount: MonetaryAmount): Boolean

Vergleicht zwei Instanzen von MonetaryAmount. Nicht signifikante Nachkommastellen werden dabei ignoriert.

Link copied to clipboard
open override fun isNegative(): Boolean

Testet, ob der Betrag negativ ist.

Link copied to clipboard
open override fun isNegativeOrZero(): Boolean

Testet, ob der Betrag negativ oder Null ist.

Link copied to clipboard
open override fun isPositive(): Boolean

Testet, ob der Betrag positiv ist.

Link copied to clipboard
open override fun isPositiveOrZero(): Boolean

Testet, ob der Betrag positiv oder Null ist.

Link copied to clipboard
open override fun isValid(): Boolean
Link copied to clipboard
open override fun isZero(): Boolean

Tested, ob der Betrag null ist.

Link copied to clipboard
open override fun multiply(multiplicand: Double): MonetaryAmount

Liefert einen GeldBetrag, desseen Wert (this multiplicand) und desse Genauigkeit (scale) this.scale() + multiplicand.scale() entspricht.

open override fun multiply(multiplicand: Long): MonetaryAmount
open override fun multiply(multiplicand: Number?): MonetaryAmount

Returns a MonetaryAmount whose value is (this multiplicand), and whose scale is this.scale() + multiplicand.scale().

Link copied to clipboard
open override fun negate(): Geldbetrag

Returns a MonetaryAmount whose value is -this, and whose scale is this.scale().

Link copied to clipboard
open override fun plus(): Geldbetrag

Liefert immer eine positiven Geldbetrag.

Link copied to clipboard
open override fun <R> query(query: MonetaryQuery<R>?): R

Fraegt einen Wert an.

Link copied to clipboard
open override fun remainder(divisor: Double): Geldbetrag

Liefert eine @code Geldbetrag} zurueck, dessen Wert this % divisor entspricht. Der Betrag kann auch negativ sein (im Gegensatz zur Modulo-Operation).

open override fun remainder(divisor: Long): Geldbetrag
open override fun remainder(divisor: Number?): Geldbetrag

Returns a MonetaryAmount whose value is this % divisor.

Link copied to clipboard
open override fun scaleByPowerOfTen(power: Int): Geldbetrag

Liefert eine Geldbetrag, dessen Wert (this * 10n) entspricht.

Link copied to clipboard
open override fun signum(): Int

Returns the signum function of this MonetaryAmount.

Link copied to clipboard
open override fun stripTrailingZeros(): Geldbetrag

Liefert einen Geldbetrag, der numerisch dem gleichen Wert entspricht, aber ohne Nullen in den Nachkommastellen.

Link copied to clipboard
open override fun subtract(amount: MonetaryAmount?): Geldbetrag

Returns a MonetaryAmount whose value is this - amount, and whose scale is max(this.scale(), subtrahend.scale().

Link copied to clipboard
fun toCent(): Long

Liefert den Betrag in Cent zurueck. Strenggenommen macht der Name nur Sinn fuer Waehrungen wie EURO, die Cents als Untergliederund liefern, tatsaechlich liefert diese Methode auch fuer andere Waehrungen ein Ergebnis zurueck.

Link copied to clipboard

Hier wird der Geldbetrag mit voller Genauigkeit ausgegeben.

Link copied to clipboard
open override fun toMap(): Map<String, Any>
Link copied to clipboard

Gibt den Betrag in Kurz-Format aus: ohne Nachkommastellen und mit dem Waehrungssymbol.

Link copied to clipboard
open override fun toString(): String

Um anzuzeigen, dass es ein Geldbtrag ist, wird zusaetzlich noch das Waehrungszeichen (abhaengig von der eingestellten Locale) ausgegeben.

Link copied to clipboard
open override fun with(operator: MonetaryOperator?): Geldbetrag

Liefert das Ergebnis des Operator vom selben Typ.

Link copied to clipboard
fun withCurrency(unit: CurrencyUnit): Geldbetrag

Liefert einen Geldbetrag mit der neuen gewuenschten Waehrung zurueck. Dabei findet keine Umrechnung statt.