sql >> Base de Datos >  >> RDS >> Sqlserver

Redondear números decimales en SQL Server 2008

1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) maneja el primer caso, cortesía de una respuesta a una pregunta similar en los foros de SQL Server , que adapté y verifiqué rápidamente.

Tenga en cuenta que si los números que está redondeando al 0.5 más cercano podría ser mayor (por ejemplo, 333.69 => 333.5 ), asegúrese de especificar más decimal precisión al lanzar (por ejemplo, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) ), o podría recibir un error de desbordamiento:

Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.

La precisión adicional no afectará el resultado final (es decir, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) y select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) ambos producen 3.5 ); pero es un desperdicio si los números que está redondeando siempre serán más pequeños.

Las referencias en línea con ejemplos están disponibles para T-SQL FLOOR , CAST y decimal para ayudar.

2) select ROUND(142600, -3) maneja el segundo caso.

Una referencia en línea similar está disponible para T-SQL ROUND .