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.
select ROUND(142600, -3)
maneja el segundo caso.
Una referencia en línea similar está disponible para T-SQL ROUND
.