1)
select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
trata do primeiro caso - cortesia de uma resposta a uma pergunta semelhante nos fóruns do SQL Server
, que adaptei e verifiquei rapidamente. Observe que, se os números que você está arredondando para o
0.5
mais próximo poderia ser maior (por exemplo, 333.69
=> 333.5
), certifique-se de especificar mais decimal
precisão ao converter (por exemplo, select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
), ou você pode receber um erro de estouro:Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
A precisão extra não afetará o resultado final (ou seja,
select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1))
e select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1))
ambos produzem 3.5
); mas é um desperdício se os números que você está arredondando forem sempre menores. Referências online com exemplos estão disponíveis para T-SQL
FLOOR
, CAST
e decimal
ajudar. 2)
select ROUND(142600, -3)
trata do segundo caso. Uma referência online semelhante está disponível para T-SQL
ROUND
.