Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что лучше: float vs numeric(5,2) / 25 сообщений из 30, страница 1 из 2
03.07.2008, 20:33
    #35410120
davydoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Добрый день, коллеги

Есть столбец, содержащий проценты (0% - 100%) с 2-мя знаками после запятой (пример, 90.56%). Мне интересно узнать, какой тип данных лучше всего использовать для такого столбца - точные (к примеру, decimal(5,2) или типы данных с приближенным представлением чисел, например, float.

Я склоняюсь использовать decimal(5.2) - (1) точное представление числа, (2) - дополнительное естественное ограничение на диапазон числа.

Вопрос достаточно общий, но на всякий случай - использую Sybase ASE 12.5

Спасибо,
Виталий
...
Рейтинг: 0 / 0
04.07.2008, 11:59
    #35411152
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Проценты надо хранить с ооо-о-о-очень длинным хвостом. Иначе вы в сумме 100 не получите.
...
Рейтинг: 0 / 0
04.07.2008, 12:46
    #35411281
davydoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Спасибо за ответ. Но с float тоже можно не получить 100%. По-моему, надежнее использовать numeric и перед загрузкой данных корректировать проценты, если сумма не соответствует 100%.
...
Рейтинг: 0 / 0
04.07.2008, 14:10
    #35411530
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
davydoffНо с float тоже можно не получить 100%
Верно. Ни один способ этого не гарантирует.

davydoffПо-моему, надежнее использовать numeric
Да.
...
Рейтинг: 0 / 0
04.07.2008, 15:09
    #35411718
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Я имел в виду, что чем длиннее хвост - тем лучше.
...
Рейтинг: 0 / 0
04.07.2008, 15:44
    #35411870
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Программист-ЛюбительЯ имел в виду, что чем длиннее хвост - тем лучше.
Кому лучше?
...
Рейтинг: 0 / 0
04.07.2008, 15:51
    #35411899
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Лучше - расчетам, которые будут делаться с этими процентами, как исходными аргументами.
...
Рейтинг: 0 / 0
04.07.2008, 15:55
    #35411914
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Лучше последующим расчетам, которые будут проводиться с этими процентами, как с исходными данными.
...
Рейтинг: 0 / 0
04.07.2008, 15:56
    #35411916
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Извините, что-то у меня реплика "не проявилась".
...
Рейтинг: 0 / 0
04.07.2008, 16:01
    #35411939
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Программист-ЛюбительЛучше - расчетам, которые будут делаться с этими процентами, как исходными аргументами.
Вообще-то

По-моему, надежнее использовать numeric и перед загрузкой данных корректировать проценты, если сумма не соответствует 100%.
В случае float-ов теоретически можно не получить 100% даже после подобной корректировки, все равно придется округление использовать. ДА и не вижу я у автора задачи хранить значение с максимальной точностью. Хотя, вполне может быть, и float спасет автора. У меня, например, коэффициенты (проценты) хранятся по-разному, есть и как numeric, есть и как float, в зависимости от требования к точности.
...
Рейтинг: 0 / 0
04.07.2008, 16:05
    #35411953
Чорный Бада
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Имхо, float следует по-возможности избегать. Чревато жестокими засадами - на здешнем форуме, как я помню, не раз поднимались темы связанные с фичами рассчётов с плавающей точкой.
...
Рейтинг: 0 / 0
04.07.2008, 16:28
    #35412032
davydoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Есть один аргумент в пользу float и вообще, типов с приближенным представлением числа - если изменяется формат, то не придется в этом случае менять тип столбца. А минусы очевидны - платформенно-зависим (по крайней мере на ASE 12.5), содержит больше ненужных значащих цифр (в том числе ненужный хвост), чем тип с точным представлением. Я считаю, что данные в БД должны быть представлены точно. Если производятся какие-то вычисления, то пожалуйста, преобразовывай тип в любой другой и проводи вычисления с преобразованным числом. Задача БД - не вычислять, а хранить данные.
...
Рейтинг: 0 / 0
04.07.2008, 17:10
    #35412172
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
davydoffЯ считаю, что данные в БД должны быть представлены точно. Если производятся какие-то вычисления, то пожалуйста, преобразовывай тип в любой другой и проводи вычисления с преобразованным числом. Задача БД - не вычислять, а хранить данные.
Для хранения 1/3 предлагаете ограничить точность, или хранить отдельно числитель и знаменатель? А для pi?
...
Рейтинг: 0 / 0
04.07.2008, 17:32
    #35412240
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Имхо, зависит от природы данных. Если количество знаков после запятой всегда не больше двух, то можно вообще хранить в целочисленном типе данных. Т.е. вместо 90.56% хранить 9056, а при выводе производить соответствующее форматирование.
...
Рейтинг: 0 / 0
04.07.2008, 17:46
    #35412283
davydoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Коллеги, спасибо за обсуждение! Для хранения 1/3 даже float не хватит (и любого другого типа тоже), если хранить это число в десятичной форме. Надо следовать рациональным принципам. Если исходные данные содержат только 2 знака после запятой, то надо использовать тип с точным представлением числа с 2-мя знаками после запятой. Не имеет смысла хранить мусор в БД. Что касается pi - то такую константу не надо хранить в БД, она и так известна. Согласен с miksoft, что это зависит от природы данных. Если данные изначально поставляются с 2-мя знаками после запятой, то наверно не стоит для этого использовать float. Что касается хранения в целочисленном виде - не согласен. Иначе во всех местах придется реализовывать алгоритм преобразования целочисленных данных в нужную, читабельную форму. numeric(A,B) , как мне кажется, решает эту задачу.
...
Рейтинг: 0 / 0
04.07.2008, 17:49
    #35412297
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
davydoffЧто касается pi - то такую константу не надо хранить в БД, она и так известна
Я в шоке. Кому известна? А если необходима большая точность, чем обеспечивается стандартной функцией в БД? Да и ясно было, что речь идет о любом иррациональном числе, хоть синусы храните, коть корни - пофигу, все равно Ваш тезис рассыпается.
...
Рейтинг: 0 / 0
04.07.2008, 23:54
    #35412758
Николай1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Сергей Васкецов davydoffЧто касается pi - то такую константу не надо хранить в БД, она и так известна
Я в шоке. Кому известна? А если необходима большая точность, чем обеспечивается стандартной функцией в БД? Да и ясно было, что речь идет о любом иррациональном числе, хоть синусы храните, коть корни - пофигу, все равно Ваш тезис рассыпается.

1. Мне. 3.14159265
2. Надо использовать другое средство для вычислений
3. В платежных системах нет иррациональных чисел
...
Рейтинг: 0 / 0
06.07.2008, 10:27
    #35413314
Что лучше: float vs numeric(5,2)
ИМХО, с точки зрения производительности лучше всего использовать int, умножая проценты на 100, а потом деля. Но это может усложнить логику процедур и/ли клиента...
...
Рейтинг: 0 / 0
07.07.2008, 09:01
    #35414064
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
В платежных системах иррациональные числа нет-нет да и проскакивают. Я сталкивался с ними при сложных расчетах с разными валютами, пересетами по курсам валют, при пропорциональном разнесении сумм.
...
Рейтинг: 0 / 0
07.07.2008, 10:46
    #35414310
Николай1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Программист-ЛюбительВ платежных системах иррациональные числа нет-нет да и проскакивают. Я сталкивался с ними при сложных расчетах с разными валютами, пересетами по курсам валют, при пропорциональном разнесении сумм.

То, что иррациональный числа проскакивают в процессе расчета, говорит лишь о том, что используется неверный алгоритм.
В итогах никаких иррациональных чисел нет, следовательно и в процессе расчета следует обходиться без них.
Единственный случай, который я не знаю, как считать - это аннуитетная схема. Но, вроде как, работает, значит можно рассчитать и ее.
А проблемы с "хвостами" при пересчете курсов валют никаким увеличением точности не решить. И решается это путем отнесения "лишних" копеек в "специально отведенное" место. Вопрос лишь в правильном выборе момента этого отнесения.
...
Рейтинг: 0 / 0
07.07.2008, 11:13
    #35414388
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Николай1В итогах никаких иррациональных чисел нет, следовательно и в процессе расчета следует обходиться без них.
Единственный случай, который я не знаю, как считать - это аннуитетная схема.Ну это далеко не единственный случай, когда возникают суммы денег с бесконечным количеством знаков после запятой (кстати, обычно возникают рациональные числа, а не иррациональные). Один только НДС чего стоит...
...
Рейтинг: 0 / 0
08.07.2008, 00:23
    #35416383
Николай1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
miksoft Николай1В итогах никаких иррациональных чисел нет, следовательно и в процессе расчета следует обходиться без них.
Единственный случай, который я не знаю, как считать - это аннуитетная схема.Ну это далеко не единственный случай, когда возникают суммы денег с бесконечным количеством знаков после запятой (кстати, обычно возникают рациональные числа, а не иррациональные). Один только НДС чего стоит...

И чего он стоит?
Как я помню из практики, кесарю отдают кесарево, а у себя эту копейку от души отрывают.
И все.
...
Рейтинг: 0 / 0
08.07.2008, 07:07
    #35416483
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Николай1 miksoft Николай1В итогах никаких иррациональных чисел нет, следовательно и в процессе расчета следует обходиться без них.
Единственный случай, который я не знаю, как считать - это аннуитетная схема.Ну это далеко не единственный случай, когда возникают суммы денег с бесконечным количеством знаков после запятой (кстати, обычно возникают рациональные числа, а не иррациональные). Один только НДС чего стоит...

И чего он стоит?
Как я помню из практики, кесарю отдают кесарево, а у себя эту копейку от души отрывают.
И все.
Много стоит :)
Если система в расчете будет ограничена 2-мя знаками после запятой (точность - копейка), то от метода расчета сумма НДС будет плавать. Например возьмите n-е количество одного товара, умножте на стоимость и подсчитайте НДС. И так же можно подсчитать НДС одного товара и умножить на количество - суммы будут разные.
Сам знаю довольно распространенную систему - которая так делает (хранит в одном месте НДС каждого товара с точностью до копейки, а вдругом - групповую НДС с тойже точностью и при этом суммы разные) :)
...
Рейтинг: 0 / 0
08.07.2008, 07:09
    #35416484
Алымов Анатолий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Надеюсь понятно описал :)
...
Рейтинг: 0 / 0
08.07.2008, 08:09
    #35416511
Николай1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что лучше: float vs numeric(5,2)
Алымов Анатолий Николай1 miksoft Николай1В итогах никаких иррациональных чисел нет, следовательно и в процессе расчета следует обходиться без них.
Единственный случай, который я не знаю, как считать - это аннуитетная схема.Ну это далеко не единственный случай, когда возникают суммы денег с бесконечным количеством знаков после запятой (кстати, обычно возникают рациональные числа, а не иррациональные). Один только НДС чего стоит...

И чего он стоит?
Как я помню из практики, кесарю отдают кесарево, а у себя эту копейку от души отрывают.
И все.
Много стоит :)
Если система в расчете будет ограничена 2-мя знаками после запятой (точность - копейка), то от метода расчета сумма НДС будет плавать. Например возьмите n-е количество одного товара, умножте на стоимость и подсчитайте НДС. И так же можно подсчитать НДС одного товара и умножить на количество - суммы будут разные.
Сам знаю довольно распространенную систему - которая так делает (хранит в одном месте НДС каждого товара с точностью до копейки, а вдругом - групповую НДС с тойже точностью и при этом суммы разные) :)

И в чем тут проблема?
Все зависит от требований учета. Если учет требует отчета по каждому товару, то так и надо считать. По каждому отдельно. А по всем сразу - только в справочных целях. Ну, или наоборот.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Что лучше: float vs numeric(5,2) / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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