Design: Dezimal/Geldtyp

Erstellt am 6. Aug. 2017  ·  3Kommentare  ·  Quelle: WebAssembly/design

Es gibt viele gute WASM-Dokumente über den Float-Typ und seine Arithmetik, wobei der Bruchteil (2-basiert)^(-1) ist.

Seit Jahren verwenden Programmierer Problemumgehungen in JavaScript, um aufgrund des einzigen 64-Bit-Gleitkommatyps für alle Zahlen eine ordnungsgemäße Berechnung von Dezimalbrüchen zu erreichen.
Gibt es einen Plan, den Typ __Money__ oder __Decimal__ zu unterstützen ( Beispiel 1 , Beispiel 2 )?

Ein praktischer Dezimaltyp ist für die meisten Geschäftsanwendungen wichtig. Viele Sprachen, Plattformen und Datenbanken unterstützen es.

Hilfreichster Kommentar

Ich glaube nicht, dass das OP um BCD-Unterstützung bittet, sondern um Unterstützung für dezimale Gleitkommazahlen . Abgesehen davon stimme ich @jfbastien zu, wir sollten uns davor hüten, etwas zu unterstützen, das nicht häufig in Hardware verfügbar ist. Laut der von mir zitierten Wikipedia-Seite wird es bisher nur von IBM-Hardware implementiert. ISTR Es gab Gerüchte, dass Intel es weiterverfolgt, aber nichts scheint sich bewahrheitet zu haben.

Intel scheint eine Emulationsbibliothek anzubieten, die angeblich portabel ist, also vermutlich C, die zu Wasm kompiliert werden könnte. Ich habe das überhaupt nicht untersucht, nicht einmal, um zu überprüfen, ob meine Vermutung richtig ist.

Alle 3 Kommentare

WebAssembly stellt allgemeine Hardwarefunktionen bereit, wenn diese Funktionen Anwendungsfälle beschleunigen. Es legt im Allgemeinen nichts anderes offen: Es wird erwartet, dass nützliche Funktionen unter Verwendung dieser Grundelemente erstellt werden.

Wir würden daher binär codierte Dezimalzahlen wie folgt auswerten:

  • Ist es in modernen ISAs weit verbreitet? Nein. Es war in älterem x86 und ist nicht im langen Modus verfügbar.
  • Ist es schneller? Man könnte argumentieren, dass manchmal das Ausdrücken der Absicht (z. B. "BCD-Hinzufügen ausführen") zu besserem Code führen kann, da die Absicht sonst verloren geht und der Compiler sie nicht zurückbekommen kann. Das ist hier nicht eindeutig der Fall, aber ich lasse mich gern vom Gegenteil überzeugen.

Beachten Sie, dass es dabei nicht darauf ankommt, wie nützlich eine Funktion ist. Wenn es nützlich ist, kann eine Bibliothek erstellt werden (oder besser, eine C++-Codebasis kann zu WebAssembly kompiliert werden). Nützlichkeit und Anwesenheit eines Champions für das Feature spielen nur eine Rolle, wann wir dazu kommen.

Ich glaube nicht, dass das OP um BCD-Unterstützung bittet, sondern um Unterstützung für dezimale Gleitkommazahlen . Abgesehen davon stimme ich @jfbastien zu, wir sollten uns davor hüten, etwas zu unterstützen, das nicht häufig in Hardware verfügbar ist. Laut der von mir zitierten Wikipedia-Seite wird es bisher nur von IBM-Hardware implementiert. ISTR Es gab Gerüchte, dass Intel es weiterverfolgt, aber nichts scheint sich bewahrheitet zu haben.

Intel scheint eine Emulationsbibliothek anzubieten, die angeblich portabel ist, also vermutlich C, die zu Wasm kompiliert werden könnte. Ich habe das überhaupt nicht untersucht, nicht einmal, um zu überprüfen, ob meine Vermutung richtig ist.

Danke @jfbastien und @lars-t-hansen für die Antworten.

Nun ist klar, dass dieses Problem nichts mit WASM zu tun hat und an eine andere Gruppe gerichtet werden sollte.

Eine Bibliothek kann dieses Problem lösen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

cretz picture cretz  ·  5Kommentare

jfbastien picture jfbastien  ·  6Kommentare

mfateev picture mfateev  ·  5Kommentare

bobOnGitHub picture bobOnGitHub  ·  6Kommentare

chicoxyzzy picture chicoxyzzy  ·  5Kommentare