Zum Hauptinhalt springen

6. Numbers (Zahlen)

Die Darstellung von Zahlen ähnelt der in den meisten Programmiersprachen verwendeten Darstellung. Eine Zahl wird dezimal dargestellt unter Verwendung von Dezimalziffern. Sie enthält einen ganzzahligen Teil, der optional mit einem Minuszeichen vorangestellt werden kann, gefolgt von einem optionalen Bruchteil und/oder Exponententeil. Führende Nullen sind nicht erlaubt.

Ein Bruchteil (Fraction Part) ist ein Dezimalpunkt gefolgt von einer oder mehreren Ziffern.

Ein Exponententeil (Exponent Part) beginnt mit dem Buchstaben E in Groß- oder Kleinschreibung, gefolgt von einem optionalen Plus- oder Minuszeichen. Dem E und optionalem Vorzeichen folgen eine oder mehrere Ziffern.

Numerische Werte, die nicht in der Syntax dargestellt werden können (wie Infinity und NaN), sind nicht erlaubt.

number = [ minus ] int [ frac ] [ exp ]

decimal-point = %x2E ; .

digit1-9 = %x31-39 ; 1-9

e = %x65 / %x45 ; e E

exp = e [ minus / plus ] 1*DIGIT

frac = decimal-point 1*DIGIT

int = zero / ( digit1-9 *DIGIT )

minus = %x2D ; -

plus = %x2B ; +

zero = %x30 ; 0

Diese Spezifikation erlaubt es Implementierungen, Grenzen für den Bereich und die Präzision der akzeptierten Zahlen festzulegen. Da Software, die IEEE 754-2008 binary64 (Doppelte Genauigkeit) Zahlen [IEEE754] implementiert, allgemein verfügbar und weit verbreitet ist, wird erwartet, dass Implementierungen, die die von diesen bereitgestellte Präzision oder den Bereich nicht überschreiten, eine gute Interoperabilität erreichen können, da Implementierungen JSON-Zahlen innerhalb der erwarteten Präzision approximieren werden. JSON-Zahlen wie 1E400 oder 3.141592653589793238462643383279 können auf potenzielle Interoperabilitätsprobleme hinweisen, da sie darauf hindeuten, dass die Software, die sie erstellt hat, erwartet, dass die empfangende Software größere numerische Bereichs- und Präzisionsfähigkeiten hat als allgemein verfügbar.

Beachten Sie, dass bei Verwendung solcher Software Ganzzahlen im Bereich [-(253)+1, (253)-1] interoperabel sind, da Implementierungen ihre numerischen Werte vollständig übereinstimmend bestimmen werden.