Dati numerici
In JScript sono disponibili due tipi di dati numerici: dati integrali e dati a virgola mobile, il cui utilizzo dipende dalla circostanza specifica. Vi sono diversi metodi per rappresentare letteralmente dati integrali e dati a virgola mobile.
I numeri interi positivi, i numeri interi negativi e il numero zero sono dati integer. Possono essere rappresentati in base 10 (decimali), in base 8 (ottali) e in base 16 (esadecimali). La maggior parte dei numeri in JScript viene rappresentata in formato decimale. Gli interi ottali sono caratterizzati da uno 0 (zero) iniziale. Possono includere solo i numeri da 0 a 7. Un numero con 0 iniziale contenente le cifre 8 e/o 9 viene interpretato come numero decimale. In genere, non è consigliabile utilizzare i numeri ottali.
Gli interi esadecimali (hex) sono caratterizzati dal valore "0x" (uno zero seguito da x|X) iniziale. Possono includere cifre comprese tra 0 a 9 e lettere comprese tra A ad F, sia maiuscole che minuscole. Le lettere da A ad F rappresentano, come singole cifre, i numeri da 10 a 15 in base 10. Vale a dire, 0xF equivale a 15 e 0x10 equivale a 16.
Sia gli ottali che gli esadecimali possono essere numeri negativi, ma non numeri frazionari e non possono essere scritti in notazione scientifica (esponenziale).
I valori a virgola mobile sono numeri interi con una parte decimale. Come i dati integer, possono essere rappresentati letteralmente mediante cifre seguite da un separatore decimale seguito a sua volta da altre cifre. Inoltre, possono essere espressi in notazione scientifica, ovvero con una e maiuscola o minuscola, che nella notazione scientifica rappresenta "dieci elevato alla potenza di". Un numero che inizia con un unico 0 (zero) e contiene un separatore decimale viene interpretato come valore letterale a virgola mobile decimale e non come valore letterale ottale.
In JScript, inoltre, i numeri a virgola mobile possono rappresentare valori numerici speciali che non possono essere rappresentati da tipi di dati integrali. Tali valori sono:
NaN (non un numero). Viene utilizzato quando si esegue un'operazione matematica su dati non appropriati, quali stringhe o il valore undefined.
Infinity. Viene utilizzato quando un numero positivo è troppo grande per essere rappresentato in JScript.
-Infinity (infinito negativo). Viene utilizzato quando un numero negativo è troppo grande per essere rappresentato in JScript.
Zero positivo e negativo. In JScript viene talvolta operata una distinzione tra lo zero positivo e lo zero negativo.
Di seguito sono riportati alcuni esempi di numeri JScript. Tenere presente che un numero che inizia con "0x" e contiene un separatore decimale genererà un errore.
Numero |
Descrizione |
Decimale equivalente |
---|---|---|
,0001, 0,0001, 1e-4, 1,0e-4 |
Quattro numeri a virgola mobile equivalenti. |
0.0001 |
3,45e2 |
Numero a virgola mobile. |
345 |
42 |
Intero. |
42 |
0378 |
Intero. Sebbene simile a un numero ottale in quanto inizia con uno zero, 8 non è una cifra ottale valida: pertanto il numero viene considerato come decimale. Verrà generato un avviso di livello 1. |
378 |
0377 |
Intero ottale. Sebbene inferiore di un'unità rispetto al numero dell'esempio precedente, il valore di questo numero è piuttosto diverso. |
255 |
0.0001, 00.0001 |
Numero a virgola mobile. Sebbene inizi con uno zero, questo numero non è un numero ottale perché presenta il separatore decimale. |
0.0001 |
0Xff |
Integer esadecimale. |
255 |
0x37CF |
Integer esadecimale. |
14287 |
0x3e7 |
Integer esadecimale. Si noti che la lettera e non viene considerata come fattore di elevazione a potenza. |
999 |
0x3,45e2 |
Errore. I numeri esadecimali non possono contenere parti decimali. |
N/D (errore del compilatore) |
Le variabili di qualsiasi tipo di dati integrale possono rappresentare solo un intervallo finito di numeri. Se si tenta di assegnare un valore letterale numerico troppo grande o troppo piccolo per un tipo di dati integrale, in fase di compilazione verrà generato un errore di mancata corrispondenza del tipo. Per ulteriori informazioni vedere Riepilogo dei tipi di dati.
Tipi di dati di valori letterali
In JScript, nella maggior parte delle situazioni, l'interpretazione del tipo di dati dei valori letterali numerici non ha particolare rilievo. Tuttavia, in caso di numeri molto grandi o molto precisi, tali dettagli possono assumere una certa importanza.
I valori letterali integer in JScript possono indicare dati di tipo int, long, ulong, decimal o double, a seconda della loro dimensione e del loro utilizzo. I valori letterali compresi nell'intervallo del tipo int, vale da dire tra -2147483648 e 2147483647, vengono interpretati come di tipo int. I valori letterali non inclusi in questo intervallo ma compresi nell'intervallo long, vale a dire tra -9223372036854775808 e 9223372036854775807, vengono interpretati come di tipo long. I valori letterali non inclusi in questo intervallo ma compresi nell'intervallo ulong, vale a dire tra 9223372036854775807 e 18446744073709551615, vengono interpretati come di tipo ulong. Tutti gli altri valori letterali integer vengono interpretati come di tipo double, con conseguente perdita di precisione. Un'eccezione a quest'ultima regola consiste nel fatto che il valore letterale verrà interpretato come di tipo decimal se viene immediatamente memorizzato in una variabile o in una costante tipizzata come decimal, oppure se è passato a una funzione tipizzata in modo da ricevere un valore di tipo decimal.
Un valore letterale a virgola mobile JScript viene interpretato come il tipo di dati double, a meno che non venga immediatamente utilizzato come decimal, come i valori letterali integer, nel qual caso verrà interpretato come di tipo decimal. Il tipo di dati decimal non può rappresentare NaN, Infinity positivo o Infinity negativo.