![]() |
| index | project | pods | responsabili |
NOMEperlnumber - semantiche dei numeri ed operazioni numeriche in Perl
SINOSSI
$n = 1234; # intero decimale
$n = 0b1110011; # intero binario
$n = 01234; # intero ottale
$n = 0x1234; # intero esadecimale
$n = 12.34e-56; # notazione esponenziale
$n = "-12.34e56"; # numero specificato come stringa
$n = "1234"; # numero specificato come stringa
$n = v49.50.51.52; # numero specificato come stringa, che a sua
# volta e` specifica in termini numerici :-)
DESCRIZIONEQuesto documento descrive come il Perl gestisce i valori numerici internamente. La funzionalita` di overloading degli operatori e` completamente ignorata in questa sede. L'overloading degli operatori consente di creare per i nomeri comportamenti definiti dall'utente, come operazioni su interi arbitrariamente larghi e su numeri in virgola mobile con precisione arbitraria, ooperazioni su numeri ``esotici'' come aritmetica modulare, aritmetica p-adica, e via dicendo. Consultate overload per maggiori dettagli.
Memorizzare i numeriPerl puo` rappreentare internamenti i numeri in 2 modi diversi: come
interi nativi, come numeri in virgola mobile nativi, e come stringhe
decimali. Le stringhe decimali possono avere una parte in notazione
esponenziale, come in Il termine ``nativo'' non indica molto quando si parla di interi nativi, mentre e` significativo quando sono convolti i numeri in virgola mobile nativi. La sola implicazione del termine ``nativo'' sugli interi e` che i limiti per i veri valori interi massimi e minimi sono vicini alle potenze di 2. Invece, i numeri in virgola mobile ``nativi'' hanno una fondamentale restrizione: possono rappresentare solo quei numeri che, quando vengono convertiti in una frazione binaria, hanno una rappresentazione relativamente ``breve''. Per esempio, 0.9 non puo` essere rappresentato con un numero in virgola mobile nativo, poiche' la frazione binaria per 0.9 e` infinita: binary0.1110011001100... con la sequenza Similmente, le stringhe decimali possono rappresentare solo numeri con un'espansione decimale finita. Siccome si tratta di stringhe, e dunque di lunghezza arbitraria, non c'e` praticamente un limite per l'esponente o per il numero di cifre decimali per questi numeri. (Ma tenete conto che cio` che stiamo discutendo sono le regole per la sola memorizzazione di questi numeri. Il fatto che si possano memorizzare numeri cosi` ``larghi'' non implica che le operazioni su questi numeri useranno tutte le cifre significative di essi. Consultate Operatori numerici e conversioni numeriche per dettagli.) In realta`, i numeri memorizzati come interi nativi possono essere memorizzati sia nella forma nativa con segno, o nella forma nativa senza segno. Dunque, i limiti del Perl per i numeri memorizzati come interi nativi sono tipicamente -2**31..2**32-1, con le opportune variazioni nel caso di interi a 64 bit. Ancora, questo non significa che Perl possa effettuare operazioni solo su interi compresi in questo intervallo: e` possibile memorizzare molti piu` interi nel formato a virgola mobile. Riassumento, il valori numerici del Perl possono memorizzare solo i numeri che hanno un'espansione decimale finita, o un'espansione binaria ``corta''.
Operatori numerici e conversioni numericheCome accennato in precedente, Perl puo` memorizzare un numero in uno qualasisi dei tre formati, ma la maggior parte degli operatori solitamente capiscono solo uno di essi. Quanto un valore numerico e` passato come argomento a tali operatori, viene convertito nel formato compreso dall'operatore. Sono possibili sei conversioni: intero nativo --> virgola mobile nativo (*) intero nativo --> stringa decimale floating point nativo --> intero nativo (*) floating point nativo --> stringa decimale (*) stringa decimale --> intero nativo stringa decimale --> virgola mobile nativo (*) Queste conversioni sono governate dalle seguenti regole generali:
RESTRIZIONE: Le conversioni sopra marcate con
Flavors of Perl numeric operationsPerl operations which take a numeric argument treat that argument in one of four different ways: they may force it to one of the integer/floating/ string formats, or they may behave differently depending on the format of the operand. Forcing a numeric value to a particular format does not change the number stored in the value. All the operators which need an argument in the integer format treat the
argument as in modular arithmetic, e.g.,
Though forcing an argument into a particular form does not change the stored number, Perl remembers the result of such conversions. In particular, though the first such conversion may be time-consuming, repeated operations will not need to redo the conversion.
AUTHORIlya Zakharevich Editorial adjustments by Gurusamy Sarathy <gsar@ActiveState.com> Updates for 5.8.0 by Nicholas Clark <nick@ccl4.org>
SEE ALSOoverload, perlop
TRADUZIONE
VersioneLa versione su cui si basa questa traduzione è ottenibile con: perl -MPOD2::IT -e print_pod perlnumber Per maggiori informazioni sul progetto di traduzione in italiano si veda http://pod2it.sourceforge.net/ .
TraduttoreTraduzione a cura di Michele Beltrame.
RevisoreRevisione a cura di Michele Beltrame. Wed Jan 28 14:17:56 2009 |