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

Откуда:
Сообщений: 136
есть 2 таблицы

balans
id uniqueidentifier
balans money


oper
id uniqueidentifier
id_balans uniqueidentifier
summa money


во второй таблице есть тригер
автор

declare @id uniqueidentifier,
@id_balans uniqueidentifier,
@balans real,
@summa real
begin

select @id = i.id, @id_balans= i.id_balans, @summa = i.summa
from inserted i

select @balans = balans from balans where id = @id_balans
select @balans = @balans - @summa
update balans set balans = @balans where id = @id_balans
end


при вставке данных во вторую таблицу иногда происходит ошибка в первой таблице
пример когда в таблицу oper вставляются данные summa = 30 то в таблице balans balans = -29,99999
возможно ли что это происходит из за внутренних преобразований real в mony?
19 ноя 14, 18:43    [16873914]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
Crimean
Member

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

а это какое-то секретное кунфу? с money работать через real и после жаловаться на точность?
19 ноя 14, 18:46    [16873922]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
M2k
Member

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

таблицы были созданы давно и в них много данных поэтому их меня формат не льзя
19 ноя 14, 18:49    [16873943]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
M2k
Member

Откуда:
Сообщений: 136
мне непонятно другое ошибка появляется не всегда и причины этого я найти не могу поэтому и задаю этот вопрос
19 ноя 14, 18:51    [16873952]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
Crimean
Member

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

а с таблицами как раз все хорошо
типы переменных правильные сделайте и будет вам щасте
19 ноя 14, 18:51    [16873953]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
_djХомяГ
Guest
Ну так меняйте тип переменных
PS Ну и просто для инфы тип money содержит 4 знака после запятой
19 ноя 14, 18:52    [16873956]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
M2k
Member

Откуда:
Сообщений: 136
_djХомяГ,

повторюсь, я не могу понять причину - почему эта ошибка возникает не всегда, а только с частью данных ?
19 ноя 14, 18:56    [16873973]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
Crimean
Member

Откуда:
Сообщений: 13147
_djХомяГ
Ну так меняйте тип переменных
PS Ну и просто для инфы тип money содержит 4 знака после запятой


это не главное в этом случае :)
19 ноя 14, 18:57    [16873976]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
почему эта ошибка возникает не всегда, а только с частью данных ?

Потому что для чисел с плавающей точкой моежт теряться точность.
19 ноя 14, 18:59    [16873986]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
M2k
Member

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

а причины - из за чего это может происходить ? почему из 50 операций 12 из них = -29,99999 ?
19 ноя 14, 19:08    [16874015]     Ответить | Цитировать Сообщить модератору
 Re: плавающая ошибка в расчетах при преобразовании данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
M2k
а причины - из за чего это может происходить ?

В смысле причины ?
http://msdn.microsoft.com/en-us/library/ms173773.aspx
Approximate-number data types for use with floating point numeric data. Floating point data is approximate; therefore, not all values in the data type range can be represented exactly.
19 ноя 14, 19:11    [16874042]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить