Startseite › Datentypen › BASIC-Datentypen Hilfe zum PBXB64-Compiler

DECIMAL128 - IEEE 754 Dezimal

DECIMAL128 ist IEEE 754-2008 dezimal128 Format: a 128-Bit-Dezimal-Gleitkommatyp, der Dezimalbrüche darstellt genau (im Gegensatz zu binär DOUBLE, was nicht 0,1 darstellen kann ohne Rundungsfehler). Es ist für finanzielle und wissenschaftliche Zwecke gedacht Berechnungen, bei denen die Dezimalgenauigkeit zwingend erforderlich ist.

Kategorie: BASIC-Datentypen

Beschreibung

DECIMAL128 ist IEEE 754-2008 dezimal128 Format: a 128-Bit-Dezimal-Gleitkommatyp, der Dezimalbrüche darstellt genau (im Gegensatz zu binär DOUBLE, was nicht 0,1 darstellen kann ohne Rundungsfehler). Es ist für finanzielle und wissenschaftliche Zwecke gedacht Berechnungen, bei denen die Dezimalgenauigkeit zwingend erforderlich ist.

Typ: Datentyp | Kategorie: Numerische Typen

PBXB64-Status: VERFÜGBAR (Wissenschaftslaufzeit)

PBXB64-Zertifizierung: [WISSENSCHAFTSSTUFE]

Lagerlayout

Warum DECIMAL128?

Binäre Gleitkommatypen (SINGLE, DOUBLE) kann nicht stellen die meisten Dezimalbrüche exakt dar. Zum Beispiel in DOUBLE:

d# = 0.1 + 0.2
PRINT d#      ' 0.30000000000000004  (not exactly 0.3)

DECIMAL128 speichert die Zahl als Dezimalkoeffizienten und Exponent, also 0.1 + 0.2 ist genau 0.3. Das ist wichtig für:

Beziehung zur WÄHRUNG

TypGrößePräzisionSkalierungReichweite
CURRENCY8 Byte15 Ziffernfest /10000+/- 922 Billionen
CURRENCYX16 Byte19 Ziffernfest /10000+/- 9,9 * 10^15
DECIMAL12816 Byte34 Zifferndynamischer Exponent+/- 9,99e6144

CURRENCY/CURRENCYX sind Festkommazahlen (immer 4 Dezimalzahlen). Orte). DECIMAL128 ist ein Gleitkomma mit einem dynamischen Exponenten, Dies ermöglicht einen viel größeren Bereich auf Kosten variabler Präzision.

Laufzeitunterstützung

DECIMAL128 Operationen werden von der Science Runtime bereitgestellt (pb_science_decimal128.o), verknüpft mit ausführbaren Benutzerdateien, die verwenden der Typ. Zu den unterstützten Vorgängen gehören:

Einschränkungen in PBXB64

Typ- und Speicherprüfung

Typ- und Variablenseiten sollen Breite, Vorzeichen, Initialisierung, Gültigkeitsbereich, Suffixregeln und x64-Layout dokumentieren. Beispiele sollen gespeicherten Wert, ausgelesenen Wert und Konvertierungs- oder Überlaufverhalten belegen.

Deklarationsregeln

Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.

Migrationshinweise

Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.

Umfangshinweise

Wenn eine Seite mehrere verwandte Formen gruppiert, sollte sie sagen, welche Form die Speicherbreite festlegt, welche nur die Deklarationssyntax ändert und welche nur historischen Charakter hat. Eine kleine Zuordnung von Familienbegriff zu den konkreten Typseiten macht die Seite beim Portieren deutlich nützlicher.

Beispiel

' Financial calculation - exact decimal arithmetic
LOCAL price AS DECIMAL128
LOCAL total AS DECIMAL128
price = 19.99
total = price * 3        ' exactly 59.97
PRINT total              ' 59.97 (no binary rounding error)

Siehe auch