Condividi tramite


ROUND (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di analisi (PDW)Endpoint di analisi SQL in Microsoft FabricMagazzino in Microsoft FabricDatabase SQL in Microsoft Fabric

Restituisce un valore numerico arrotondato alla lunghezza o alla precisione specificata.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

ROUND ( numeric_expression , length [ , function ] )

Argomenti

numeric_expression

Espressione della categoria del tipo di dati numerici esatti o numerici approssimati.

length

La precisione con cui numeric_expression deve essere arrotondata. 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 specificate per lunghezza. Quando length è un numero negativo, numeric_expression viene arrotondato a sinistra del separatore decimale come specificato da length.

function

Il tipo di operazione da eseguire. La funzione deve essere Tinyint, Smallint o Int. Quando la funzione viene omessa o ha un valore di 0 (predefinito), numeric_expression viene arrotondata. Quando un valore diverso da 0 è specificato, numeric_expression viene troncato.

Tipi restituiti

Restituisce i tipi di dati seguenti:

Risultato dell'espressione Tipo restituito
tinyint int
smallint int
int int
bigint bigint
Categoria decimal e numeric (p, s) decimale(p, s)
Categoria money e smallmoney money
Categoria float e real float

Osservazioni:

  • ROUND restituisce sempre un valore. Se la lunghezza è negativa e maggiore del numero di cifre prima del punto decimale, ROUND restituisce 0.

    Esempio Risultato
    ROUND(748.58, -4) 0
  • ROUND restituisce un numeric_expression arrotondato, indipendentemente dal tipo di dato, quando la lunghezza è un numero negativo.

    Esempi Risultato
    ROUND(748.58, -1) 750.00
    ROUND(748.58, -2) 700.00
    ROUND(748.58, -3) Comporta un overflow aritmetico, perché 748.58 di default è decimale(5, 2), che non può restituire 1000.00.
  • Per arrotondare fino a quattro cifre, cambia il tipo di dato dell'input. Ad esempio:

    SELECT ROUND(CAST (748.58 AS DECIMAL (6, 2)), -3);
    

    Il set di risultati è il seguente.

    1000.00
    
  • ROUND rompe i pareggi arrotondando metà da zero (noto anche come arrotondamento commerciale).

    Esempi Risultato
    ROUND(1.15, 1) 1.2
    ROUND(-1.15, 1) -1,2

Esempi

R. Usa ROUND e stime

L'esempio seguente mostra due espressioni che dimostrano usando ROUND, l'ultima cifra è sempre una stima.

SELECT ROUND(123.9994, 3),
       ROUND(123.9995, 3);
GO

Il set di risultati è il seguente.

----------- -----------
123.9990    124.0000

B. Usare approssimazioni ROUND e arrotondamento

Nell'esempio seguente vengono illustrati l'arrotondamento e l'approssimazione.

SELECT ROUND(123.4545, 2),
       ROUND(123.45, -2);

Il set di risultati è il seguente.

----------  ----------
123.4500    100.00

C. Usa ROUND per troncare

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

Il set di risultati è il seguente.

151.00
SELECT ROUND(150.75, 0, 1);
GO

Il set di risultati è il seguente.

150.00