Color scheme: Light
You are here: start » de » Dokumentation » Werkzeuge für Microsoft Access » WKL Office JSON » how-to » Exakte Beträge und große Kennungen lesen

Exakte Beträge und große Kennungen lesen

Sie lesen Geldbeträge ohne Gleitkommarundung und Kennungen mit mehr Stellen, als ein Long oder Double fasst.

Lösungsüberblick

Die Bibliothek bewahrt jede Zahl als den Text auf, mit dem sie gelesen wurde. GetCurrency und GetDecimal wandeln diesen Text ohne Umweg über Double um (Currency rundet anschließend auf vier Nachkommastellen, Decimal auf 28 bis 29 signifikante Stellen); Value gibt für ganze Zahlen außerhalb des Long-Bereichs einen Decimal zurück. Einen Double liefern nur GetDouble sowie Value für Zahlen mit Nachkommastellen oder Exponent und für Zahlen außerhalb des Decimal-Bereichs.

Umsetzung

Dim doc As New JDoc
doc.LoadJson "{""total"": 1234567.89, ""orderId"": 9007199254740993}"
 
Dim total As Currency
total = doc.GetCurrency("$.total")                ' 1234567.89, exact
 
Debug.Print doc.GetDecimal("$.orderId")           ' 9007199254740993
Debug.Print TypeName(doc.Root("orderId").Value)   ' Decimal
 
' Write an amount exactly
doc.SetValue "$.total", CCur(99.95)

Hinweise

  • GetLong lehnt eine Zahl mit Nachkommastellen ab (jeTypeMismatch), statt sie abzuschneiden, ebenso eine Zahl außerhalb des Long-Bereichs.
  • GetCurrency rundet mehr als vier Nachkommastellen auf vier, und zwar wie CCur auf die nächste gerade Ziffer (mathematisches Runden); verwenden Sie für mehr Nachkommastellen GetDecimal.
  • Decimal fasst 28 bis 29 signifikante Stellen; eine Zahl mit mehr Stellen wird ohne Fehler auf diese Genauigkeit gerundet, und eine Zahl, deren Betrag unter 1E-28 liegt, wird zu 0. Der JSON-Text selbst bleibt immer unverändert: GetString gibt alle Ziffern zurück. Speichern Sie solche Werte in einem Text- oder Dezimalfeld, nicht in einem Double-Feld. Alle Regeln und Grenzen: Werte und Grenzen.
  • Zahlen in Zeichenfolgen werden gelesen, wenn ihr Text ohne umgebende Leerzeichen eine JSON-Zahl ist: "42" und " 4.2 " werden gelesen; "007", "+5", ".5" und "12,5" lösen jeTypeMismatch aus – lesen Sie solche Codes mit GetString.

Verwandte Themen

de/wiki/msaccess/json/how-to/read-exact-numbers.txt · Last modified: by Wolfgang van der Stille