|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Хочу уточнить по поводу правильного обращения с числами в FB: Если в базу могут попадать числа от 1Е-6 до 1Е6, которые надо будет перемножать, то: - хранить их надо в numeric(12,6) - параметры и результаты процедур с ними делать double precision (чтобы не нарваться на переполнение) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 16:17 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2, без указания диалекта вопрос не имеет смысла. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 16:21 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2- параметры и результаты процедур с ними делать double precision (чтобы не нарваться на переполнение) Если тебе точность не нужна, так и храни их сразу в double precision. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 16:33 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovЕсли тебе точность не нужна Не понял фразу... поясни без указания диалекта вопрос не имеет смысла 3-й ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 16:54 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2Не понял фразу... поясни тогда надо читать доку про numeric и double precision. Вообще оба пункта хотелки не сочетаются. Потому что numeric(12,6) будет bigint, на котором ты собираешься "нарваться на переполнение", а double precision наоборот, теряет точность чисел. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 16:58 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
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: хотелок никаких - главное понять как правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 17:17 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2хотелок никаких - главное понять как правильно Правильно - не производить арифметических операций в БД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 17:23 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovtantico2хотелок никаких - главное понять как правильно Правильно - не производить арифметических операций в БД. Ну тут ты загнул. Можно их (операции) производить, но следует отдавать себе отчет о возможных последствиях. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 17:25 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
DarkMasterМожно их (операции) производить Можно производить сложение. И вычитание. Умножению там уже нефиг делать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 17:26 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Видать у каждого своя личная попоболь... Я вот не могу вьехать, что делает одна процедура (сижу и мучаю ее под отладчиком) - хотя сам же ее написал. Лет 5 назад ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 17:30 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПравильно - не производить арифметических операций в БД. Думаю, что православные джедаи только так и делают, но сейчас мне даже страшно об этом думать.. Поэтому вернусь к теме: пожалуйста, поясните механизм - как при хранении в double precision может теряться точность? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:47 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2как при хранении в double precision может теряться точность? Ты всерьёз спрашиваешь как при хранении значения в форме с плавающей точкой может теряться точность?.. Тебе стоит почитать об их реализации в современных компьютерах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 18:52 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2, Грубо - если тебе нужна точность до 3-5 знака после запятой - да на здоровье (только операции сравнения правильно пиши). если точность очень важна (а ну как у тебя ядренный реактор под попой) - тут уже нужно думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 19:25 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2как при хранении в double precision может теряться точность? потому что double precision - вещественное число. В отличие от numeric, которое в 3м диалекте - целое число. http://www.delphikingdom.com/asp/viewitem.asp?catalogID=374 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 19:34 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
kdv http://www.delphikingdom.com/asp/viewitem.asp?catalogID=374 ок - я понял, с double precision можно нарваться на бесконечную двоичную дробь и набрать мусора в хвост. Но почему DarkMasterесли тебе нужна точность до 3-5 знака после запятой - да на здоровье. если точность очень важна - тут уже нужно думать ? Ведь если double precision может честно сохранить ~15 знаков (всего), то это вполне перекрывает нужды numeric(12,6). Т.е. потери точности быть не должно. Или я чего не понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.04.2016, 23:20 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2, повторюсь - в третьем диалекте numeric(12,6) хранится в bigint, а не в double precision. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2016, 00:18 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2, Тип numeric заменяет бухгалтерские счёты, тип double precision - логарифмическую линейку. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2016, 15:21 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
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. То есть мусор появится только через три знака после нужной мне точности. Я правильно понимаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2016, 11:31 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2, Если только хранить - то да, получишь что-то вроде 123456.1234560001234... Чудеса у тебя начнутся для математики. Сделай SUM() по колонке в 10-20тыс значений и посмотри, насколько у тебя вырастет погрешность из-за "мусора" в хвосте. Те же спецэффеты будут при умножении и делении. Никто ж не знает, что ты собираешься считать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2016, 11:59 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
DarkMaster, ну да - это я и хотел спросить. Если предполагается много арифметики с сохранёнными числами, то безопасней хранить в numeric(12,6), а все расчёты вести в double precision. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2016, 12:15 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
tantico2Если предполагается много арифметики с сохранёнными числами .... то исходить надо из задачи и предметной области, а не из того что на форуме пишут. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2016, 12:24 |
|
ещё раз о numeric
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovtantico2Если предполагается много арифметики с сохранёнными числами .... то исходить надо из задачи и предметной области, а не из того что на форуме пишут.+1 tantico2 , Если просто перемножить два числа, это одно, но ведь предположительно будет что-то посложнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.04.2016, 20:51 |
|
|
start [/forum/topic.php?fid=40&msg=39213031&tid=1562233]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 17ms |
total: | 163ms |
0 / 0 |