Passa al contenuto principale

6. Numbers (Numeri)

La rappresentazione dei numeri è simile a quella utilizzata nella maggior parte dei linguaggi di programmazione. Un numero è rappresentato in base 10 utilizzando cifre decimali. Contiene una componente intera che può essere preceduta da un segno meno opzionale, che può essere seguita da una parte frazionaria e/o da una parte esponente. Gli zeri iniziali non sono consentiti.

Una parte frazionaria è un punto decimale seguito da una o più cifre.

Una parte esponente inizia con la lettera E maiuscola o minuscola, che può essere seguita da un segno più o meno. La E e il segno opzionale sono seguiti da una o più cifre.

I valori numerici che non possono essere rappresentati nella grammatica seguente (come Infinity e NaN) non sono consentiti.

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

Questa specifica consente alle implementazioni di impostare limiti sull'intervallo e la precisione dei numeri accettati. Poiché il software che implementa i numeri IEEE 754 binary64 (doppia precisione) [IEEE754] è generalmente disponibile e ampiamente utilizzato, una buona interoperabilità può essere ottenuta da implementazioni che non si aspettano più precisione o intervallo di quanto questi forniscano, nel senso che le implementazioni approssimeranno i numeri JSON entro la precisione attesa. Un numero JSON come 1E400 o 3.141592653589793238462643383279 può indicare potenziali problemi di interoperabilità, poiché suggerisce che il software che lo ha creato si aspetta che il software ricevente abbia maggiori capacità per la grandezza numerica e la precisione di quanto sia ampiamente disponibile.

Si noti che quando viene utilizzato tale software, i numeri che sono interi e sono nell'intervallo [-(253)+1, (253)-1] sono interoperabili nel senso che le implementazioni saranno esattamente d'accordo sui loro valori numerici.