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

Откуда:
Сообщений: 3
Помогите пожалуйста.

Почему скрипты дают разные результаты?

SQL2000

declare @priceforT as real
set @priceforT = 0.78/1000
select @priceforT

declare @priceforT as real
set @priceforT = 0.78
declare @v2 as real
set @v2 = @priceforT/1000
select @v2
16 дек 09, 17:00    [8076919]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
as real потому что вы юзаете не в тему
16 дек 09, 17:01    [8076929]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36805
Потому что вы проводите операции с разными типами данных, и еще разному результату удивляетесь.

З.Ы.
declare @priceforT as real
set @priceforT = cast(0.78 as real)/1000
select @priceforT
16 дек 09, 17:04    [8076955]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
CooM
Member

Откуда:
Сообщений: 3
упс ... точно
с float все работает ок

списибо!
16 дек 09, 17:09    [8076993]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
Glory
Member

Откуда:
Сообщений: 104760
CooM
упс ... точно
с float все работает ок

Вы уверены ? И даже с as float(19) ?
16 дек 09, 17:11    [8077006]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
для ценновых величин обычно используют тип money
16 дек 09, 17:17    [8077033]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
CooM
Member

Откуда:
Сообщений: 3
с float(19) - ошибка.

а вот так:
declare @priceforT as float
set @priceforT = 0.78
declare @v2 as float
set @v2 = @priceforT/1000
select @v2

все ок.
16 дек 09, 17:21    [8077068]     Ответить | Цитировать Сообщить модератору
 Re: Ошибки закругления  [new]
Glory
Member

Откуда:
Сообщений: 104760
CooM
с float(19) - ошибка.

а вот так:
declare @priceforT as float
set @priceforT = 0.78
declare @v2 as float
set @v2 = @priceforT/1000
select @v2

все ок.

Это не ошибка. Это называется точность хранения.
16 дек 09, 17:22    [8077076]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить