---
title: 'Geld und Währung in Java'
url: 'https://tutego.de/blog/javainsel/2017/02/geld-und-waehrung-in-java'
markdown: 'https://tutego.de/blog/javainsel/2017/02/geld-und-waehrung-in-java.md'
date: '2017-02-24'
description: 'Geldbeträge repräsentieren Für Geldbeträge gibt es in Java keinen eigenen Datentyp und so kann eine Speicherung je nach Programm immer anders aussehen. Es bieten sich an: BigDecimal: Vorteil sind die präzisen Berechungen und die wählbaren Rundungen Paar von int long: Getrenntes Speichern der Vor-/…'
taxonomy:
  category:
    - Allgemein
    - Insel
---

# Geld und Währung in Java

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Geld und Währung in Java

24.02.2017 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

### Geldbeträge repräsentieren

Für Geldbeträge gibt es in Java keinen eigenen Datentyp und so kann eine Speicherung je nach Programm immer anders aussehen. Es bieten sich an:

- `BigDecimal`: Vorteil sind die präzisen Berechungen und die wählbaren Rundungen
- Paar von int long: Getrenntes Speichern der Vor-/Nachkommastellen

Hinweis: Die primitiven Datentypen double und float sind wegen ihrer Unfähigkeit Vielfaches von 0.01 korrekt dazustellen nicht empfohlen; Rundungsfehler treten schnell auf.

#### Money and Currency API

Im „JSR 354: Money and Currency API“ wird ein eigener Datentyp für Geldbeträge definiert, und die Typen sollen eigentlich in Java 9 aufgenommen werden, doch dazu kam es nicht. Dennoch sind die Typen interessant und die Referenzimplementierung Moneta ein Blick wert: . Neben Geldbeträgen erlaubt die kleine Bibliothek auch Umrechungen, Formatierungen und eigene Währungen.

### ISO 4217

Währungen werden durch Währungscodes beschrieben, und die Definition findet sich in der Norm ISO 4217. Einige ISO-Codes sind:

ISO 4217-CodeWährung/EinheitLandEUREuroLänder der europäischen WährungsunionCNYRenminbiChinaDKKKroneDänemarkGBPPfundVereinigtes KönigreichINRRupieIndienUSDDollarUSA, Ecuador, …XAUFeinunze Gold

Einige ISO 4217-Codes

Die Tabelle lässt am letzten Eintrag erkennen, dass es auch ISO-Codes für Edelmetalle und sogar Fonds gibt. Für jedes Kürzel gibt es ebenfalls einen numerischen Code.

### Währungen in Java repräsentieren

Java repräsentiert Währungen durch die Klasse `java.util.Currency`. Exemplare der Klasse werden durch eine Fabrikmethode `getInstance(String currencyCode)` erfragt, bzw. aus einer Aufzählung ausgewählt.

Beispiel: Gib alle im System angemeldeten Währungen mit ein paar Informationen aus:

```java
Currency.getAvailableCurrencies().stream()

        .sorted( Comparator.comparing( Currency::getCurrencyCode ) )

        .forEach( c -> System.out.printf( "%s, %s, %s, %s%n",

                                          c.getCurrencyCode(), c.getSymbol(),

                                          c.getDisplayName(), c.getNumericCode() ) );
```

Die Ausgabe beginnt so:

ADP, ADP, Andorranische Pesete, 20

AED, AED, VAE-Dirham, 784

AFA, AFA, Afghanische Afghani (1927–2002), 4

AFN, AFN, Afghanischer Afghani, 971

ALL, ALL, Albanischer Lek, 8

…

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/), [Insel](https://tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Unterschiede suchen mit Arrays.mismatch (…)](https://tutego.de/blog/javainsel/2017/02/unterschiede-suchen-mit-arrays-mismatch.md)
- Next: [Statische ofXXX(…)-Methoden zum Aufbau unveränderbarer Set-, List-, Map-Datenstrukturen](https://tutego.de/blog/javainsel/2017/02/statische-ofxxx-methoden-zum-aufbau-unveraenderbaren-set-list-map-datenstrukturen.md)
