Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как осознать эти чудеса?  [new]
PZH
Member

Откуда:
Сообщений: 57
Сервер SQL 2000
При использовании функции round наткнулся на такое вот:

declare @dec decimal;
declare @real real;
declare @real_too real;

set @dec = 150.75;
set @real = cast(@dec as real);
--set @real = @dec;
set @real_too = 150.75;

select ROUND(cast(@dec as float), 0, 1)  --Result 151.0
SELECT ROUND(@real, 0, 1)                --Result 151.0
SELECT ROUND(@real_too, 0, 1)            --Result 150.0


Ну я еще могу понять что не работает с типом decimal, НО КАК объяснить строку ниже? Переменная поменяла свой тип что ли?
set @real = @dec;
ничего не изменится если написать так
set @real = cast(@dec as real);

real можно поменять на float и наоборот - результат тот же.
4 дек 13, 12:17    [15238132]     Ответить | Цитировать Сообщить модератору
 Re: Как осознать эти чудеса?  [new]
Glory
Member

Откуда:
Сообщений: 104760
select cast(@dec as float), ROUND(cast(@dec as float), 0, 1)  --Result 151.0
SELECT @real, ROUND(@real, 0, 1)                --Result 151.0
SELECT @real_too, ROUND(@real_too, 0, 1)            --Result 150.0

Так понятнее ?
4 дек 13, 12:20    [15238149]     Ответить | Цитировать Сообщить модератору
 Re: Как осознать эти чудеса?  [new]
PZH
Member

Откуда:
Сообщений: 57
Да все. decimal (10, 2). Спасибо
4 дек 13, 12:25    [15238189]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить