Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ещё раз о numeric / 22 сообщений из 22, страница 1 из 1
08.04.2016, 16:17
    #39211242
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Хочу уточнить по поводу правильного обращения с числами в FB:
Если в базу могут попадать числа от 1Е-6 до 1Е6, которые надо будет перемножать, то:
- хранить их надо в numeric(12,6)
- параметры и результаты процедур с ними делать double precision (чтобы не нарваться на переполнение)
?
...
Рейтинг: 0 / 0
08.04.2016, 16:21
    #39211250
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2, без указания диалекта вопрос не имеет смысла.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2016, 16:33
    #39211259
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2- параметры и результаты процедур с ними делать double precision (чтобы не
нарваться на переполнение)
Если тебе точность не нужна, так и храни их сразу в double precision.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2016, 16:54
    #39211281
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Dimitry SibiryakovЕсли тебе точность не нужна
Не понял фразу... поясни
без указания диалекта вопрос не имеет смысла
3-й
...
Рейтинг: 0 / 0
08.04.2016, 16:58
    #39211284
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2Не понял фразу... поясни
тогда надо читать доку про numeric и double precision. Вообще оба пункта хотелки не сочетаются. Потому что numeric(12,6) будет bigint, на котором ты собираешься "нарваться на переполнение", а double precision наоборот, теряет точность чисел.
...
Рейтинг: 0 / 0
08.04.2016, 17:17
    #39211294
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
kdv, доку читал
эту http://www.ibase.ru/files/firebird/langref25rus/index.html#langref25-types
эту http://firebirdsql.su/doku.php?id=tipy_dannyx
и по форумам посмотрел.

Про то что с моими нумериками попадаю под ограничение (18,8) - понял
А как double precision точность теряет - не понял

ps: хотелок никаких - главное понять как правильно
...
Рейтинг: 0 / 0
08.04.2016, 17:23
    #39211301
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2хотелок никаких - главное понять как правильно
Правильно - не производить арифметических операций в БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2016, 17:25
    #39211304
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Dimitry Sibiryakovtantico2хотелок никаких - главное понять как правильно
Правильно - не производить арифметических операций в БД.


Ну тут ты загнул. Можно их (операции) производить, но следует отдавать себе отчет о возможных последствиях.
...
Рейтинг: 0 / 0
08.04.2016, 17:26
    #39211308
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
DarkMasterМожно их (операции) производить
Можно производить сложение. И вычитание. Умножению там уже нефиг делать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2016, 17:30
    #39211315
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Dimitry Sibiryakov,

Видать у каждого своя личная попоболь... Я вот не могу вьехать, что делает одна процедура (сижу и мучаю ее под отладчиком) - хотя сам же ее написал. Лет 5 назад
...
Рейтинг: 0 / 0
08.04.2016, 18:47
    #39211400
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Dimitry SibiryakovПравильно - не производить арифметических операций в БД.

Думаю, что православные джедаи только так и делают, но сейчас мне даже страшно об этом думать..
Поэтому вернусь к теме: пожалуйста, поясните механизм - как при хранении в double precision может теряться точность?
...
Рейтинг: 0 / 0
08.04.2016, 18:52
    #39211410
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2как при хранении в double precision может теряться точность?

Ты всерьёз спрашиваешь как при хранении значения в форме с плавающей точкой может теряться
точность?.. Тебе стоит почитать об их реализации в современных компьютерах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.04.2016, 19:25
    #39211432
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2,

Грубо - если тебе нужна точность до 3-5 знака после запятой - да на здоровье (только операции сравнения правильно пиши). если точность очень важна (а ну как у тебя ядренный реактор под попой) - тут уже нужно думать.
...
Рейтинг: 0 / 0
08.04.2016, 19:34
    #39211441
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2как при хранении в double precision может теряться точность?
потому что double precision - вещественное число. В отличие от numeric, которое в 3м диалекте - целое число.
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=374
...
Рейтинг: 0 / 0
08.04.2016, 23:20
    #39211519
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
kdv http://www.delphikingdom.com/asp/viewitem.asp?catalogID=374
ок - я понял, с double precision можно нарваться на бесконечную двоичную дробь и набрать мусора в хвост.
Но почему
DarkMasterесли тебе нужна точность до 3-5 знака после запятой - да на здоровье. если точность очень важна - тут уже нужно думать ?
Ведь если double precision может честно сохранить ~15 знаков (всего), то это вполне перекрывает нужды numeric(12,6). Т.е. потери точности быть не должно. Или я чего не понял?
...
Рейтинг: 0 / 0
09.04.2016, 00:18
    #39211537
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2,
повторюсь - в третьем диалекте numeric(12,6) хранится в bigint, а не в double precision.
...
Рейтинг: 0 / 0
10.04.2016, 15:21
    #39211936
shs_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2,

Тип numeric заменяет бухгалтерские счёты, тип double precision - логарифмическую линейку.
...
Рейтинг: 0 / 0
11.04.2016, 11:31
    #39212356
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
kdvповторюсь - в третьем диалекте numeric(12,6) хранится в bigint, а не в double precision.
Да, помню, но вопрос о другом:
Dimitry Sibiryakov предлагает хранить в double precision, но предупреждает о возможной потере точности. DarkMaster подтверждает это и говорит, что больше, чем на 3-5 знаков после запятой лучше не расчитывать.
Я не понимаю - почему (для конкретно моего случая)?
У меня числа вида (12,6). 12 значащих цифр, из них 6 после запятой. Если double precision гарантировано хранит 15 значащих цифр, то я могу не опасаться никакой потери точности, если буду хранить в double precision. Максимум, что мне грозит это если я запишу в таблицу число 123456,123456, то там окажется что-то типа 1,23456123456000109351728е6. То есть мусор появится только через три знака после нужной мне точности. Я правильно понимаю?
...
Рейтинг: 0 / 0
11.04.2016, 11:59
    #39212396
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2,

Если только хранить - то да, получишь что-то вроде 123456.1234560001234... Чудеса у тебя начнутся для математики. Сделай SUM() по колонке в 10-20тыс значений и посмотри, насколько у тебя вырастет погрешность из-за "мусора" в хвосте. Те же спецэффеты будут при умножении и делении. Никто ж не знает, что ты собираешься считать.
...
Рейтинг: 0 / 0
11.04.2016, 12:15
    #39212419
tantico2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
DarkMaster, ну да - это я и хотел спросить.
Если предполагается много арифметики с сохранёнными числами, то безопасней хранить в numeric(12,6), а все расчёты вести в double precision.
...
Рейтинг: 0 / 0
11.04.2016, 12:24
    #39212436
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
tantico2Если предполагается много арифметики с сохранёнными числами

.... то исходить надо из задачи и предметной области, а не из того что на форуме пишут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.04.2016, 20:51
    #39213031
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ещё раз о numeric
Dimitry Sibiryakovtantico2Если предполагается много арифметики с сохранёнными числами

.... то исходить надо из задачи и предметной области, а не из того что на форуме пишут.+1


tantico2 ,
Если просто перемножить два числа, это одно, но ведь предположительно будет что-то посложнее?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ещё раз о numeric / 22 сообщений из 22, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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