Tipo di dati DECIMAL ESQL

Il tipo di dati DECIMAL contiene una rappresentazione esatta di un numero decimale. I decimali hanno valori di precisione, scala ed arrotondamento. La precisione è il numero totale di cifre di un numero:
  • La precisione minima è 1
  • La precisione massima è 34
La scala è il numero di cifre a destra del punto decimale:
  • La scala minima (-esponente) è -999,999,999
  • La scala massima (-esponente) è +999,999,999

Non è possibile definire la precisione e la scala quando si dichiara un DECIMAL, perché tali valori vengono assegnati automaticamente. E' possibile specificare la precisione e la scala solo quando si esegue il cast ad un DECIMAL.

Scala, precisione ed arrotondamento

Vengono applicate le seguenti regole relative alla scala, alla precisione ed all'arrotondamento:
  • A meno che l'arrotondamento non sia richiesto per conservare la precisione massima, la scala del risultato di un'addizione o di una sottrazione è la maggiore tra le scale dei due operandi.
  • A meno che l'arrotondamento non sia richiesto per conservare la precisione massima, la scala del risultato di una moltiplicazione è la somma delle scale dei due operandi.
  • La precisione del risultato di una divisione è il più piccolo minore tra il numero di cifre necessarie per rappresentare il risultato esattamente e la precisione massima.
  • Tutti i calcoli di addizione, sottrazione, moltiplicazione e divisione vengono arrotondati alle cifre meno importanti, se necessario, in modo da essere contenuti nella precisione massima
  • Tutti gli arrotondamenti automatici sono gli arrotondamenti del banchiere o della metà simmetrica pari. Le regole sono:
    • Quando la prima cifra rilasciata è 4 o un valore minore, la prima cifra conservata non viene modificata
    • Quando la prima cifra rilasciata è 6 o un valore superiore, la prima cifra conservata viene incrementata
    • Quando la prima cifra rilasciata è 5, la prima cifra conservata viene incrementata se dispari e non modificata se pari. Per questo motivo, 1.5 e 2.5 vengono arrotondati a 2 e 3.5 e 4.5 vengono arrotondati a 4
    • I numeri negativi vengono arrotondati in base alla stessa regola

Letterali decimali

I letterali decimali formati da una stringa senza apici composta da sole cifre, che non contiene un punto decimale o un esponente (ad esempio 12345) sono di tipo INTEGER se sono abbastanza piccoli da essere rappresentati come integer. In caso contrario, sono di tipo DECIMAL.

I letterali decimali formati da una stringa senza apici di cifre, facoltativamente da un punto decimale, e da un esponente (ad esempio 123e1), sono di tipo FLOAT se sono abbastanza piccoli da essere rappresentati come float. In caso contrario, sono di tipo DECIMAL.

I letterali decimali formati dalla parola chiave DECIMAL e da una stringa con apici di cifre, con o senza un punto decimale e con o senza un esponente, sono di tipo DECIMAL, ad esempio, DECIMAL '42', DECIMAL '1.2346789e+203'.

Le stringhe in questo tipo di letterali possono anche avere i valori:
  • 'NAN', non un numero
  • 'INF', 'INFINITY'
  • '+INF', '+INFINITY'
  • '-INF', '-INFINITY'
  • 'MAX'
  • 'MIN'
(in qualsiasi combinazione di lettere maiuscole e minuscole) per indicare i valori corrispondenti.
Inizio modificaAttenzione: se non vengono specificate le cifre con sufficiente precisione, quell'INF viene restituito, come illustra il seguente esempio:
 SET VAL [equals char] CAST('123456' AS DECIMAL(3,0))
Fine modifica
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ak17820_