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.
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]
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:
| Typ | Größe | Präzision | Skalierung | Reichweite |
|---|---|---|---|---|
CURRENCY | 8 Byte | 15 Ziffern | fest /10000 | +/- 922 Billionen |
CURRENCYX | 16 Byte | 19 Ziffern | fest /10000 | +/- 9,9 * 10^15 |
DECIMAL128 | 16 Byte | 34 Ziffern | dynamischer 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.
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:
DOUBLE, STRING, Ganzzahltypen.DECIMAL128 Literale werden zur Kompilierungszeit dezimal analysiert
Text. Sehr große Exponenten können an Präzision verlieren, wenn das Literal 34 überschreitet
signifikante Ziffern.DECIMAL128 und binäres Gleitkomma in a
Ein einzelner Ausdruck erfordert eine explizite Konvertierung, um Stille zu vermeiden
Präzisionsverlust.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.
Nennen Sie, ob Deklarationen #DIM ALL, AS-Klauseln, Suffixe oder ausdrückliche Sichtbarkeit benötigen. Trennen Sie lokalen, statischen, globalen und thread-lokalen Speicher.
Prüfen Sie Pointer-, Handle- und LONG-Annahmen beim Wechsel von 32-Bit-PB-Code zu PBXB64.
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.
' 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)