Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Festkommazahl

Eine Festkommazahl ist eine Zahl, die aus einer festen Anzahl von Ziffern vor und nach dem Komma besteht. Die Position des Kommas ist also fest vorgegeben, …

Inhalt6 Abschnitte
  1. 1. Grundprinzip und Bedeutung
  2. 2. Darstellung und Zahlenformat
  3. 3. Rechenregeln und Rechenaufwand
  4. 4. Typische Rechnungen
  5. 5. Darstellungsgrenzen und Rundung
  6. 6. Dezimale Festkommazahlen für Geldbeträge

Grundprinzip und Bedeutung

Eine Festkommazahl ist eine Zahl mit einer festen Anzahl von Ziffern vor und nach dem Komma. Die Position des Kommas ist durch das verwendete Zahlenformat vorgegeben und muss deshalb nicht mitgespeichert werden.

Festkommazahlen bilden einen begrenzten Ausschnitt der rationalen Zahlen in einem Datentyp ab, meist in einem Integer, also einer Ganzzahl mit bestimmter Bitbreite. Bei insgesamt k Stellen sind üblicherweise die ersten n Stellen Vorkommastellen und die übrigen m = k − n Stellen Nachkommastellen, wobei n ≤ k gilt. Sowohl dezimale als auch binäre Festkommazahlen sind in der Informatik praktisch bedeutsam.

Gegenüber einer Gleitkommazahl gleicher Bitlänge besitzt eine Festkommazahl einen kleineren Wertebereich. Dafür bleibt die Genauigkeit innerhalb dieses Bereichs gleich: Der Abstand zwischen zwei darstellbaren Zahlen ist überall konstant. Bei Gleitkommazahlen ist eine Zahl dagegen nicht immer exakt darstellbar; unter anderem kann es zur Absorption kommen. Anwendungen, die genaue Arithmetik benötigen, können deshalb Festkommazahlen verwenden, beispielsweise GnuCash.

Darstellung und Zahlenformat

Wie ein gespeichertes Bitmuster zu lesen ist, hängt von der festgelegten Kommaposition ab. Bei binären Festkommazahlen der Länge k = 2 kann dasselbe Muster daher verschiedene Werte bedeuten. Das Muster 01 steht bei n = 2 Vorkommastellen für 1, bei n = 1 für 0,5 und bei n = 0 für 0,25. Entsprechend bedeutet das Muster 11 je nach Format 3, 1,5 oder 0,75. Weil die Anzahl der Vorkommastellen vorher festgelegt ist, wird nur das Bitmuster gespeichert, nicht das Komma.

Zur Bezeichnung des Zahlenformats dient die Q-Nomenklatur. Ein Format mit einer Nachkommastelle heißt „Q1“, eines mit zwei Nachkommastellen „Q2“ und so weiter. Bei Wörtern aus mehreren Bits können Vor- und Nachkommastellen genauer angegeben und durch einen Punkt getrennt werden. Eine Festkommazahl mit acht Bits kann zum Beispiel als „Q7.1“ oder „Q6.2“ bezeichnet werden.

Rechenregeln und Rechenaufwand

Die gespeicherten binären Muster werden grundsätzlich wie ganze Zahlen verarbeitet. Deshalb kann jeder digitale Prozessor, der Ganzzahlarithmetik unterstützt, auch Festkomma-Arithmetik durchführen. Dabei gelten besondere Regeln für die Kommaposition:

• Bei Addition und Subtraktion müssen alle Operanden dieselbe Kommaposition besitzen. Andernfalls werden sie zunächst durch Schiebeoperationen angeglichen. Das Ergebnis hat anschließend dieselbe Kommaposition.

• Bei einer Multiplikation ist die Zahl der Nachkommastellen des Ergebnisses gleich der Summe der Nachkommastellen aller Faktoren. Soll das Ergebnis wieder das ursprüngliche Format erhalten, ist daher eine Korrektur erforderlich.

• Eine Multiplikation beziehungsweise Division mit einer Potenz 2^n entspricht bei gleichbleibender Kommaposition einer Verschiebung des Bitmusters um n Stellen nach links beziehungsweise rechts. Man kann dies auch als gedankliche Verschiebung des Kommas auffassen.

Die feste Kommaposition kann gegenüber Gleitkommazahlen Rechenaufwand sparen. Bei binärer Darstellung lassen sich notwendige Multiplikationen und Divisionen häufig durch schnelle Bitverschiebungen ersetzen. Fractint wurde als Fraktalgenerator gezielt unter diesem Gesichtspunkt mit Festkomma-Arithmetik entwickelt. Seit Mitte der 1990er Jahre verfügen Prozessoren jedoch über eigene Gleitkommarechenwerke, sodass Fraktalberechnungen mit Gleitkommazahlen inzwischen schneller sein können als mit Ganzzahlen.

Typische Rechnungen

Bei einer dezimalen Festkommadarstellung mit zwei Nachkommastellen werden die ursprünglichen Werte mit 100 multipliziert: 6,3 → 630_F und 2,1 → 210_F.

Die Addition erfolgt wie bei Ganzzahlen: 630_F + 210_F = 840_F, was 8,4 entspricht. Ebenso ergibt die Subtraktion 630_F − 210_F = 420_F, also 4,2.

Bei der Multiplikation entsteht zunächst 630_F × 210_F = 132300. Dieses Ergebnis besitzt nicht dasselbe Festkommaformat wie die Faktoren. Nach der erforderlichen Division durch 100 erhält man 1323_F → 13,23. Bei der Division ergibt 630_F / 210_F zunächst 3. Zur Anpassung an zwei Nachkommastellen wird mit 100 multipliziert: 300_F → 3,00.

Ein binäres Beispiel verwendet acht Bits mit vier Nachkommastellen. Dezimal gilt 3,5 × 2,5 = 8,75. Gespeichert werden 3,5 als 0011 1000_b und 2,5 als 0010 1000_b. Die Ganzzahlmultiplikation liefert 0000 1000 1100 0000_b. Würde man ohne Korrektur nur 1100 0000_b übernehmen, entspräche dies bei vier Nachkommastellen 1100,0000_b = 12_d. Nach der notwendigen Verschiebung erhält man dagegen 1000,1100_b = 8,75_d und damit das erwartete Ergebnis.

Darstellungsgrenzen und Rundung

Bei einer binären Festkommazahl mit k = 8 Bits sowie n = m = 4 Vor- und Nachkommastellen liegt die kleinste positive Schrittweite bei 0,0625. Beispielsweise werden 1_R als 00010000_F, 0,5_R als 00001000_F, 0,625_R als 00001010_F und 0,0625_R als 00000001_F dargestellt. Der größte darstellbare Wert ist 15,9375_R = 11111111_F. Somit umfasst der Wertebereich nur 0_R bis 15,9375_R bei einer Auflösung von 0,0625_R. 16_R liegt oberhalb des größten Wertes, während 0,06_R kleiner als der kleinste positive Wert ist. Dieser geringe Darstellungsbereich ist der entscheidende Nachteil gegenüber Gleitkommazahlen.

Bei der Umwandlung dezimaler reeller Zahlen in binäre Festkommazahlen können außerdem Rundungsfehler entstehen. 7_R = 01110000_F ist exakt darstellbar, 0,7_R ≈ 00001011_F dagegen nicht. Die Zahl 0,7 lässt sich auch mit beliebig vielen binären Nachkommastellen nicht als endliche Summe von Zweierpotenzen darstellen. Wo solche Abweichungen vermieden werden sollen, kann eine dezimale Festkommadarstellung eingesetzt werden.

Dezimale Festkommazahlen für Geldbeträge

Dezimale Festkommazahlen eignen sich besonders für Geldbeträge. Bei Gleitkommazahlen können Rundungsfehler dazu führen, dass nach einer Anzahlung und einer Restzahlung ein winziger Restbetrag oder ein Guthaben unterhalb der kleinsten Währungseinheit verbleibt. Da dieser Wert nicht genau 0 ist, könnte ein Datenbanksystem den Auftrag fälschlich als noch nicht vollständig bezahlt finden.

Viele Programmiersprachen und Datenbanken bieten deshalb Datentypen namens Currency, Money oder Decimal an. Ihnen liegt meist ein vorzeichenbehafteter 64-Bit-Integer zugrunde. Zuweisung, Addition und Subtraktion funktionieren wie bei Ganzzahlen. Das gilt auch für die Multiplikation einer Festkommazahl mit einem Integer sowie für die abrundende Division durch einen Integer. Bei anderen, möglicherweise verlustbehafteten Operationen muss die Zahl der Nachkommastellen berücksichtigt werden.

In manchen Sprachen ist die Zahl der Nachkommastellen frei wählbar. Andernfalls sind häufig vier Nachkommastellen vorgesehen. Damit lassen sich neben den verbreiteten Hundertsteln auch die Währungsuntereinheiten Fünftel in Mauretanien und Madagaskar sowie Tausendstel in der MENA-Region darstellen.

Eine vorzeichenbehaftete 64-Bit-Zahl mit vier Nachkommastellen hat den Wertebereich −922.337.203.685.477,5808 bis 922.337.203.685.477,5807. Das entspricht ungefähr dem Zehnfachen der Weltwirtschaftsleistung des Jahres 2017 in Dollar. Eine 32-Bit-Zahl mit vier Nachkommastellen, in T-SQL beispielsweise smallmoney genannt, umfasst −214.748,3648 bis 214.748,3647.

Weiterlesen

Dezimaltrennzeichen Es kommt vor, dass in der Unterstufe/Primarschule das Komma (wie es gesprochen wird), ab der Mittelstufe jedoch der Punkt gelehrt wird. In amtlichen … Rationale Zahl Die Dezimalbruchentwicklung einer rationalen Zahl ist endlich oder unendlich periodisch. Eine reelle Zahl, die keine rationale Zahl ist, wird als irrationale … Datentyp Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebraischen Strukturen. Mit der weiteren Konkretisierung der … Integer (Datentyp) Als grundlegender arithmetischer Datentyp werden Ganzzahlen von der Hardware fast aller Rechenanlagen nativ unterstützt und sind in nahezu jeder … Gleitkommazahl Gleitkommazahlen bestehen aus einer festen Anzahl von Ziffern, die gemäß dem Stellenwertsystem den Wert der Zahl angeben, sowie der Angabe, um wie viele Stellen … Dualsystem Das Dualsystem (lat. dualis „zwei enthaltend“), auch Zweiersystem oder Binärsystem genannt, ist ein Zahlensystem, das zur Darstellung von Zahlen nur zwei … Ganze Zahl Die ganzen Zahlen (auch Ganzzahlen, lateinisch numeri integri) sind eine Erweiterung der natürlichen Zahlen. ℤ. Der Buchstabe Z mit Doppelstrich Madagaskar Die Insel liegt etwa 420 Kilometer vor der Ostküste Mosambiks im Indischen Ozean. Madagaskar ist mit einer Fläche von 587.295 Quadratkilometern nach Indonesien … Weltwirtschaft Die Weltwirtschaft hat sich im 19. Jahrhundert bedingt durch die Industrialisierung gebildet und war stark abhängig von der Entwicklung der internationalen … Zweierkomplement Das Zweierkomplement kann als eine Interpretationsweise formatierter binärer Bitfolgen gesehen werden, welche für negative Werte von Integer-Variablen auftritt, …