powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ошибка вычисления
4 сообщений из 4, страница 1 из 1
ошибка вычисления
    #32866936
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте

ASA 9.0.2.2542

Вот такой вот запрос

select cast( 2006 * 5.0/6.0 as numeric(12,2) ),
2006 * cast( case 1 when 1 then 5.0/6.0 when 0 then 1 end as numeric(15,6) )
from dummy ;

возвращает такой результат

1671,67 1664,980000

Сталкивался ли кто с таким багом . Как его обойти я уже придумал. А вот где еще можно наступить на такие грабли
Спасибо
...
Рейтинг: 0 / 0
ошибка вычисления
    #32866977
Высоцкий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никакого бага нет
Есть фича

2006 * 5 / 6 рассматривается как
2006 * 5 и далее все это делится на 6

Во втором случае 5 / 6 получаем 0,83 так как никахи указаний по точности нет а уже потом умножается на 2006 - получаем другой результат
...
Рейтинг: 0 / 0
ошибка вычисления
    #32867671
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом
2006*5.0/6.0 = 2006 * 0.8333333333333333 = 1671.66666666666666 ~ 1671.67
Во втором
2006*(5.0/6.0) ~ 2006 * 0.83 = 1664.98
здесь ~ - опереция округления до сотых

Т.к. ошибка округления A/B в 3-ем знаке может достигать 0.005, то при умножении на 2006 разница между вычислениями может быть до 10.03 (по абсолютному модулю).
А для очень больших и очень маленьких значений может стать важным даже порядок следования сомножителей (делителей). Здесь можно наткнуться на то, что промежуточный результат выпадает из диапазона допустимых значений для double или исказиться из-за того в числе что не может быть более 15-16 значащих десятичных цифр. .
...
Рейтинг: 0 / 0
ошибка вычисления
    #32868170
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ошибка вычисления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]