Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как хранить деньги? :-)) [D6, FireBird1.5.1]


Страницы:   1 2

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 ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо