![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как хранить деньги? :-)) [D6, FireBird1.5.1]
DSKalugin © (2005-01-27 13:39:00)Какой типа данных вы используете для хранения цен в FireBird/InerBase и почему?
Я использую NUMERIC(15,5)
так же есть еще
-DECIMAL (совсем не ясно чем он отличается от NUMERIC)
-FLOAT типа нашего Single
-DOUBLE PRECISION подозреваю родство с делфийским Double
P.S. 5 знаков после запятой я указываю для повышения точности при вычислении цен. Т.к. приходится умножать на разные коэффициенты типа валютные, скидки, наценки,НДСы... при которых выплывает существенная погрешность если использовать 2 знака после запятой
Danilka (2005-01-27 17:57:00) [21][11] DSKalugin © (27.01.05 15:33)
Ты на смайлики не смотри, я вполне серьезно написал про NUMERIC(15,2).
Ибо были раньше у нас суммы в Орокле, как-раз у счетов-фактур, NUMERIC(21,6), потом переделали на NUMERIC(21,2). Т.к. точность нужна до копеек. А не дя десятых или сотых долей копейки.
Vemer (2005-01-27 16:52:00) [22]Vot..
http://forum.ibase.ru/phpBB2/viewtopic.php?t=66
DSKalugin (2005-01-27 16:14:00) [23]CREATE TABLE Table1 (ld INTEGER, m __Money)
???? Серьезно? лезу искать РелизНотес
sniknik (2005-01-27 16:06:00) [24]> так точно, количество этих самых Моней :-))
не количество, а буквально
CREATE TABLE Table1 (ld INTEGER, m __Money)
(FireBird 1.5)
Johnmen (2005-01-27 15:53:00) [25]>DSKalugin © (27.01.05 15:16) [6]
>из этого выходит лучше DOUBLE PRECISION?
А NUMERIC(15,5) и есть DP, в 1 диалекте.
В 3 далекте это INT64. И не будет проблем с погрешностью разрядной сетки. Хотя такие проблемы бывают только от недопонимания...
Val (from Donetsk) (2005-01-27 15:43:00) [26]>msguns © (27.01.05 15:38) [14]
пофиг. банки мои еще работают :)
msguns (2005-01-27 15:38:00) [27]>Val (from Donetsk) (27.01.05 15:34) [13]
>точные деньги - копейки.
Ага, особенно когда торгуем п/э кульками оптом или гвоздями поштучно ;)
Val (from Donetsk) (2005-01-27 15:34:00) [28]точные деньги - копейки.
msguns (2005-01-27 15:34:00) [29]>DSKalugin © (27.01.05 15:19) [7]
>а у нас торговля вообще без копеек. Округляемс все цены.
Торгуем оружием ? ;)
DSKalugin (2005-01-27 15:33:00) [30]деньги должны ходить по базе и в программе точными,
округление до целых происходит на этапе продажи(печати товарных чеков и т.д.) но это не так важно.
В итоге выбираю двойную точность DOUBLE PRECISION как это не странно.
Val (from Donetsk) (2005-01-27 15:28:00) [31]целым, в копейках.
Danilka (2005-01-27 15:23:00) [32][7] DSKalugin © (27.01.05 15:19)
тогда, вообще интегер. :)
кстати, если не ошибаюсь, NUMERIC(15,2) будет храниться как интегер. Или вру?
Reindeer Moss Eater (2005-01-27 15:22:00) [33]из этого выходит лучше DOUBLE PRECISION?
Это плавающая точка. Со всеми вытекающими.
DSKalugin (2005-01-27 15:19:00) [34]2 Danilka ©
а у нас торговля вообще без копеек. Округляемс все цены.
Типа
цена 15грн
скидка 10%=2грн :-))
итого 13грн
DSKalugin (2005-01-27 15:16:00) [35]2 msguns ©
я тоже прихожу к выводу что надо завести отдельный домен
Округляю явсегда на клиенте либо маской поля
TNumericField.DisplayFormat='0.00'
либо функцией
FloatToStrF(Price,fffixed,7,2)
2 Johnmen ©
из этого выходит лучше DOUBLE PRECISION?
<Offtopic> По мнению экспертов, многие россияне продолжают свои сбережения хоронить в рублях.</Offtopic>
Danilka (2005-01-27 15:14:00) [36]NUMERIC(15,2)
шоб бухши не возмущались: "почему в распечатанной счет-фактуре сумма НДС за все товары не совпадает с этой-же суммой посчитаной на куркуляторе???".
:))
msguns (2005-01-27 14:56:00) [37]Рекомендую так:
Завести 3 домена:
- "Нормальные" деньги (два знака в дроби)
- Цена (флоат)
- Сумма (4 знака дроби)
- Кол-во (флоат)
Первый идет на рекизиты документов (заголовки накладных, платежи и т.д.)
Второй идет на фактуру накладных. При учете по поставкам и отсутствии фичи авторазноски скидок можно даже заменить флоат на 4-5 знаков дроби (нехай сервак округляет)
Третий для сумм по строке фактуры
Четвертый ясно для чего.
Универсально практически для любой специфики товара и вообще склада. Но есть минусы:
-Поиск по флоат нелзя вести по точной маске - лишь по диапазону
-При вычислениях в документо-строках надо делать округления (на коиенте или сервере - это по вкусу)
Johnmen (2005-01-27 14:48:00) [38]>DSKalugin © (27.01.05 13:39)
Строго говоря, в ИБ/ФБ есть лишь типы (численные)
INT, INT64(в поздних версиях), FLOAT и DOUBLE PRECISION.
А такие типы, как NUMERIC и DECIMAL, являются псевдотипами и не имеют физической реализации. Они сводятся к указанным выше.
Про всё это написано в прилагаемой документации к конкретной версии сервера.
DSKalugin (2005-01-27 14:43:00) [39]sniknik ©
так точно, количество этих самых Моней :-))
sniknik (2005-01-27 14:31:00) [40]__Money ?