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

Может кто-нибудь объяснить, почему в нижеприведенном коде round возвращает разные результаты?

declare @a float
select @a = 0.145
select round(@a, 2)

declare @b numeric(15, 3)
select @b = 0.145
select round(@b, 2)


Что характерно, 0.135 округляет одинаково
6 дек 16, 17:01    [19973502]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
ziktuw
Member

Откуда:
Сообщений: 3552
Ну такой вот float неточный. Приколись:

declare @a float
set @a = 0.144999999999999999999999
select round(@a, 2)


----------------------
0,15
6 дек 16, 17:24    [19973592]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
Ddgg
Guest
ziktuw,

Так я уже прикололся. Вопрос стоял "почему". Чем отличается физ.представление float и numeric?
6 дек 16, 17:32    [19973623]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
пьяный тюлень
Member

Откуда:
Сообщений: 100
Если очень упрощенно, то float хранит данные в степенях двойки, decimal в степенях десятки. Когда число кладется во float, оно округляется до ближайшей степени двойки. Если получившееся значение меньше, чем половина разряда, то оно округляется вниз. С decimal такого не происходит.
6 дек 16, 17:37    [19973636]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Ddgg
ziktuw,

Так я уже прикололся. Вопрос стоял "почему". Чем отличается физ.представление float и numeric?

фраза "не точный" это точная характеристика, а не шутка

https://technet.microsoft.com/ru-ru/library/ms173773(v=sql.110).aspx
6 дек 16, 17:42    [19973646]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
Degg
Guest
пьяный тюлень,

написанное понятно. А примера с картинками физического представления нет? В books online вообще ничего не сказано
6 дек 16, 18:16    [19973731]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Degg,
примеры с картинками
https://ru.wikipedia.org/wiki/Число_с_плавающей_запятой
6 дек 16, 18:27    [19973751]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Degg,

потому, что это не имеет отношения к SQL серверу.
6 дек 16, 18:31    [19973766]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по округлению  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Числа с плавающей точкой хранятся одинаково, для этого существует стандарт.
6 дек 16, 18:32    [19973769]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить