четверг, 18 января 2018 г.

Округление в MS SQL Server, money и float

Небольшая особенность, с которой приходится иногда сталкиваться в MS SQL - разный подход к округлению функцией round для типов данных money и float. Проявляется это в том случае,   когда (N+1)-й знак = 5, а последующие знаки равны нулю (подразумевается, что округление идет до N знаков после запятой).
Так вот, money - округляется по правилам математического округления, в большую сторону, а вот float  - в меньшую!

например, результатом выполнения select round (cast (11.385 as float), 2,0) будет  11.38
В то время, как select round (cast (11.385 as money), 2,0) выдаст ожидаемые 11.39