

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Tipi numerici
<a name="r_Numeric_types201"></a>

**Topics**
+ [Tipi Integer](#r_Numeric_types201-integer-types)
+ [Tipo DECIMAL o NUMERIC](#r_Numeric_types201-decimal-or-numeric-type)
+ [Note sull'utilizzo di colonne NUMERIC o DECIMAL a 128 bit](#r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns)
+ [Tipi in virgola mobile](#r_Numeric_types201-floating-point-types)
+ [Calcoli con valori numerici](r_numeric_computations201.md)
+ [Valori letterali interi e in virgola mobile](r_numeric_literals201.md)
+ [Esempi con tipi numerici](r_Examples_with_numeric_types201.md)

I tipi di dati numerici comprendono numeri interi, decimali e in virgola mobile. 

## Tipi Integer
<a name="r_Numeric_types201-integer-types"></a>

Usa i tipi di dati SMALLINT, INTEGER e BIGINT per memorizzare numeri interi di intervalli diversi. Non è possibile salvare valori non compresi nell'intervallo consentito per ciascun tipo. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/redshift/latest/dg/r_Numeric_types201.html)

## Tipo DECIMAL o NUMERIC
<a name="r_Numeric_types201-decimal-or-numeric-type"></a>

Usare il tipo di dati DECIMAL o NUMERIC per memorizzare i valori con una *precisione definita dall'utente*. Le parole chiave DECIMAL e NUMERIC sono interscambiabili. In questo documento, *decimale* è il termine preferito per questo tipo di dati. Il termine *numerici* è usato solitamente per riferirsi a tipi di dati interi, decimali e in virgola mobile. 

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/redshift/latest/dg/r_Numeric_types201.html)

Definisci una colonna DECIMAL in una tabella specificando *precisione* e *scala*: 

```
decimal(precision, scale)
```

 *precisione*   
Il numero totale di cifre significative nell'intero valore: il numero di cifre su entrambi i lati del punto decimale. Ad esempio, il numero `48.2891` ha una precisione di 6 e una scala di 4. La precisione predefinita, se non specificata, è 18. La precisione massima è 38.  
 Se il numero di cifre alla sinistra del punto decimale in un valore input supera la precisione della colonna meno la sua scala, non è possibile copiare il valore nella colonna (o inserito o aggiornato). Questa regola si applica a qualsiasi valore che non rientra nell'intervallo della definizione della colonna. Ad esempio, gli intervalli di valori ammessi per una colonna `numeric(5,2)` è da `-999.99` a `999.99`. 

 *scale*   
Il numero di cifre decimale nella parte frazionaria del valore, alla destra del punto decimale. Gli interi hanno una scala di zero. Nella specifica di una colonna, è necessario che il valore della scala sia inferiore o uguale al valore della precisione. La scala predefinita, se non specificata, è 0. La scala massima è 37.  
Se la scala di un valore input caricato in una tabella è maggiore della scala della colonna, il valore viene arrotondato alla scala specificata. Ad esempio, la colonna PRICEPAID nella tabella SALES è una colonna DECIMAL(8,2). Se un valore DECIMAL(8,4) viene inserito nella colonna PRICEPAID, il valore viene arrotondato alla scala di 2.   

```
insert into sales
values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null);

select pricepaid, salesid from sales where salesid=0;

pricepaid | salesid
-----------+---------
4323.90 |       0
(1 row)
```
 Tuttavia, i risultati di espliciti cast di valori selezionati dalle tabelle non sono arrotondati.

**Nota**  
Il valore positivo massimo che è possibile inserire in una colonna DECIMAL(19,0) è `9223372036854775807` (263 -1). Il valore negativo massimo è `-9223372036854775808`. Ad esempio, il tentativo di inserire il valore `9999999999999999999` (19 nove) causerà un errore dell'overflow. Indipendentemente dalla posizione del punto decimale, la stringa più grande che Amazon Redshift può rappresentare come numero DECIMAL è `9223372036854775807`. Ad esempio, il valore più grande che è possibile caricare in una colonna DECIMAL(19,18) è `9.223372036854775807`.  
Queste regole sono dovute al fatto che i valori di tipo DECIMAL con 19 o meno cifre di precisione significative vengono archiviati internamente come numeri interi a 8 byte, mentre i valori di tipo DECIMAL con 20-38 cifre di precisione significative vengono archiviati come numeri interi a 16 byte. 

## Note sull'utilizzo di colonne NUMERIC o DECIMAL a 128 bit
<a name="r_Numeric_types201-notes-about-using-128-bit-decimal-or-numeric-columns"></a>

Non assegnare in modo arbitrario la precisione massima alle colonne DECIMAL a meno che non sia certo che l'applicazione richieda tale precisione. I valori a 128 bit usano il doppio dello spazio su disco rispetto ai valori a 64 bit e possono quindi rallentare il tempo di esecuzione delle query. 

## Tipi in virgola mobile
<a name="r_Numeric_types201-floating-point-types"></a>

Usa i tipi di dati REAL e DOUBLE PRECISION per memorizzare valori numerici con *precisione variabile*. Questi tipi sono *inesatti*, il che significa che alcuni valori vengono memorizzati come approssimazioni, così che la memorizzazione e la restituzione di un valore specifico possono risultare in lievi discrepanze. Se hai bisogno di calcoli e storage precisi (come per importi monetari), usa il tipo di dati DECIMAL.

REAL rappresenta il formato a virgola mobile a precisione singola, secondo lo standard IEEE 754 per l'aritmetica binaria a virgola mobile. Ha una precisione di circa 6 cifre e un intervallo compreso tra 1E-37 e 1E\$137. È inoltre possibile specificare questo tipo di dati come FLOAT4.

DOUBLE PRECISION rappresenta il formato a virgola mobile a precisione doppia, secondo lo standard IEEE 754 per l'aritmetica binaria a virgola mobile. Ha una precisione di circa 15 cifre e un intervallo compreso tra 1E-307 e 1E\$1308. È inoltre possibile specificare questo tipo di dati come FLOAT o FLOAT8.

Oltre ai valori numerici ordinari, i tipi a virgola mobile hanno diversi valori speciali. Usa le virgolette singole per racchiudere questi valori quando li usi in un'istruzione SQL:
+ `NaN` – not-a-number
+ `Infinity`: infinito
+ `-Infinity`: infinito negativo

Ad esempio, per inserire not-a-number nella colonna `day_charge` della tabella, `customer_activity` esegui il seguente codice SQL:

```
insert into customer_activity(day_charge) values('NaN');
```