ROUND (Transact-SQL)
Viene restituito un valore numerico arrotondato alla lunghezza o alla precisione specificata.
Sintassi
ROUND (numeric_expression , length [ ,function ] )
Argomenti
numeric_expression
Espressione di un tipo di dati della categoria numerici esatti o numerici approssimati, con l'eccezione del tipo di dati bit.length
Precisione in base a cui arrotondare l'argomento numeric_expression. length deve essere un'espressione di tipo tinyint, smallint o int. Quando length è un numero positivo, numeric_expression viene arrotondato al numero di posizioni decimali specificato dall'argomento length. Quando length è un numero negativo, numeric_expression viene arrotondata a sinistra del separatore decimale, come specificato da length.function
Tipo di operazione da eseguire. function deve essere di tipo tinyint, smallint o int. Se function viene omesso oppure è uguale a 0 (valore predefinito), l'argomento numeric_expression viene arrotondato. Se viene specificato un valore diverso da 0, l'argomento numeric_expression viene troncato.
Tipi restituiti
Vengono restituiti i tipi di dati seguenti:
Risultato dell'espressione |
Tipo restituito |
---|---|
tinyint |
int |
smallint |
int |
int |
int |
bigint |
bigint |
Categorie decimal e numeric (p, s) |
decimal(p, s) |
Categorie money e smallmoney |
money |
Categorie float e real |
float |
Osservazioni
Tramite la funzione ROUND viene restituito sempre un valore. Se l'argomento length è negativo e maggiore del numero di cifre che precedono il separatore decimale, la funzione ROUND restituisce 0.
Esempio |
Risultato |
---|---|
ROUND(748.58, -4) |
0 |
La funzione ROUND restituisce un valore numeric_expression arrotondato indipendentemente dal tipo di dati quando length è un numero negativo.
Esempi |
Risultato |
---|---|
ROUND(748.58, -1) |
750.00 |
ROUND(748.58, -2) |
700.00 |
ROUND(748.58, -3) |
Genera un overflow aritmetico, perché 748.58 assume il valore decimal(5,2), tramite il quale non può essere restituito 1000.00. |
Per un arrotondamento fino a 4 cifre, modificare il tipo di dati di input. Ad esempio: SELECT ROUND(CAST (748.58 AS decimal (6,2)),-3); |
1000.00 |
Esempi
A. Utilizzo della funzione ROUND e delle stime
In questo esempio vengono utilizzate due espressioni per illustrare che con la funzione ROUND l'ultima cifra è sempre una stima.
SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)
GO
Set di risultati:
----------- -----------
123.9990 124.0000
B. Utilizzo della funzione ROUND e delle approssimazioni di arrotondamento
Nell'esempio seguente vengono illustrati l'arrotondamento e l'approssimazione.
SELECT ROUND(123.4545, 2);
GO
SELECT ROUND(123.45, -2);
GO
Set di risultati:
----------
123.4500
(1 row(s) affected)
--------
100.00
(1 row(s) affected)
C. Utilizzo della funzione ROUND per ottenere un troncamento
Nell'esempio seguente vengono utilizzate due istruzioni SELECT per illustrare la differenza tra l'arrotondamento e il troncamento. La prima istruzione arrotonda il risultato, la seconda lo tronca.
SELECT ROUND(150.75, 0);
GO
SELECT ROUND(150.75, 0, 1);
GO
Set di risultati:
--------
151.00
(1 row(s) affected)
--------
150.00
(1 row(s) affected)