Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Типы данных для расчётов и денежных операций, плюсы и минусы / 25 сообщений из 49, страница 1 из 2
24.01.2021, 18:12
    #40038439
hlopotun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Всем добрый день,

кто уже на этом собаку съел, поделитись.
Стоит ли использовать тип Currency или Extendet как прявильно? И как будет потом меньше проблем с расхождением расчётных сумм в сравнении с банками и другими финансовыми организациями?

Спасибо
...
Рейтинг: 0 / 0
24.01.2021, 18:27
    #40038440
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Только целые, никаких вещественных типов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.01.2021, 20:00
    #40038447
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Если точности 4 знака хватает, то используйте Currency. Если нет, до домножайте до целого числа и используйте целые типы.

Real/Single/Double/Extended для денежных расчетов использовать нельзя никогда.
...
Рейтинг: 0 / 0
24.01.2021, 20:02
    #40038448
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
_Vasilisk_
Если точности 4 знака хватает, то используйте Currency

накаких Currency, всё считать только целыми, в копейках.
точно так же считают все банки, там никаких currency нет
...
Рейтинг: 0 / 0
24.01.2021, 21:02
    #40038455
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Currency = type Int64
...
Рейтинг: 0 / 0
24.01.2021, 21:07
    #40038456
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Dmitry Arefiev
Currency = type Int64

таки Int64 лучше, чем какие-то ваши currency
...
Рейтинг: 0 / 0
24.01.2021, 21:18
    #40038457
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator,

Чем?
...
Рейтинг: 0 / 0
24.01.2021, 21:23
    #40038458
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
rgreat
defecator,

Чем?


наверное, тем, что в System.pas есть преобразования CurrencyToInt64, Int64ToCurrency (за точность названий не ручаюсь) ?
...
Рейтинг: 0 / 0
24.01.2021, 21:28
    #40038461
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator,

Не понял преимуществ.
...
Рейтинг: 0 / 0
24.01.2021, 21:31
    #40038463
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
rgreat
defecator,

Не понял преимуществ.

преимущество - считать всё в целых, типа того же Int64
вместо искусственных типов, типа currency
...
Рейтинг: 0 / 0
24.01.2021, 21:46
    #40038467
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator
преимущество - считать всё в целых, типа того же Int64
вместо искусственных типов, типа currency
Так себе аргумент.
Давай еще например double через Int64 считать.

Per rectum ad astra. (c)
...
Рейтинг: 0 / 0
24.01.2021, 21:47
    #40038468
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator
Dmitry Arefiev
Currency = type Int64

таки Int64 лучше, чем какие-то ваши currency

UInt64 лучше! :)
...
Рейтинг: 0 / 0
24.01.2021, 21:50
    #40038469
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
ъъъъъ,

Array of byte, чего уж мелочиться.
...
Рейтинг: 0 / 0
24.01.2021, 21:51
    #40038470
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
rgreat
defecator
преимущество - считать всё в целых, типа того же Int64
вместо искусственных типов, типа currency
Так себе аргумент.
Давай еще например double через Int64 считать.

Per rectum ad astra. (c)


ога-ога.
100 тыщ копеек из Int64 потом проще и точнее перевести в рубли, чем ваши double с округлениями

Ты когда квитанцию в сбере по QR-коду оплачиваешь, не поленись, отсканируй телефоном, посмотри что там в строке Sum

да и квиточки с QR-кодом с магазинных чеков тоже не поленись
...
Рейтинг: 0 / 0
24.01.2021, 21:53
    #40038471
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator
100 тыщ копеек из Int64 потом проще и точнее перевести в рубли, чем ваши double с округлениями
Ты на досуге почитай как currency устроен. И в чем его отличие от double.
...
Рейтинг: 0 / 0
24.01.2021, 21:54
    #40038472
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
rgreat
defecator
100 тыщ копеек из Int64 потом проще и точнее перевести в рубли, чем ваши double с округлениями
Ты на досуге почитай как currency устроен. И в чем его отличие от double.


defecator

Ты когда квитанцию в сбере по QR-коду оплачиваешь, не поленись, отсканируй телефоном, посмотри что там в строке Sum

да и квиточки с QR-кодом с магазинных чеков тоже не поленись (по ссылке пройти)
...
Рейтинг: 0 / 0
24.01.2021, 22:46
    #40038481
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
rgreat
defecator
100 тыщ копеек из Int64 потом проще и точнее перевести в рубли, чем ваши double с округлениями
Ты на досуге почитай как currency устроен. И в чем его отличие от double.

Для чего тебе сотые доли копеек? Как ты их используешь?
...
Рейтинг: 0 / 0
24.01.2021, 23:24
    #40038493
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
ъъъъъ,

Каши не просит.

А вообще бывают, например, ливийские дирхамы, которые 1/1000 динара.
Или рины, которые 1/1000 японской йены.

Ну а уж что там в Африке твориться - это отдельная тема.
...
Рейтинг: 0 / 0
25.01.2021, 04:05
    #40038530
fraks
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
ъъъъъ
rgreat
пропущено...
Ты на досуге почитай как currency устроен. И в чем его отличие от double.

Для чего тебе сотые доли копеек? Как ты их используешь?


А вот пригодилось однажды, для повышения точности округления. Потом правда пришлось это выкинуть. :)

Исходно и в программе и в базе использовал для хранения денег тип integer и какое-то время было нормально.
Int64 тогда в Firebird не было, впрочем как и его самого.

Но таки неудобно, при каждом запросе делить на 100, что бы вывести в рублях, понятно для человека.
В какой-то момент решил что таки в currency и в numeric(18,4) хранить удобнее. Решил переделать. Потратил несколько месяцев но до конца такой объемный переход довести не смог. Откатил все взад и пошел заново, но теперь частями, не все сразу.
Так что у меня сейчас в базе и в программе в разных местах одновременно есть и в рублях и в копейках.

Был еще у меня пролет, с типом данных и точностью. Завел в базе поле под вес товара. Ну и типа в граммах - куда еще точнее, пользователи все равно точнее не взвесят. Ну и сделал. А потом, когда начали работать с этим полем плотнее, обнаружился косяк. С товарами с малым весом. В частности это открытки. Попробуй задай вес одной открытки, а потом посчитай сколько будет весить 5000 открыток. Набирается большая ошибка. currency тут был бы очень к месту :)
...
Рейтинг: 0 / 0
25.01.2021, 08:12
    #40038542
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
defecator
rgreat
defecator,

Не понял преимуществ.

преимущество - считать всё в целых, типа того же Int64
вместо искусственных типов, типа currency
не нравится currency, заведи свой
лишние сущности это плохо, но необъявленные сущности ещё хуже
...
Рейтинг: 0 / 0
25.01.2021, 08:36
    #40038547
cptngrb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
а чем int64 спасет от операции 1/3*3? Копейками в целую часть точно не спасти
...
Рейтинг: 0 / 0
25.01.2021, 09:17
    #40038553
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
hlopotun,

Цена не ходит одна. Как правило, это три величины: сумма, цена и количество.
Две храним в базе данных, третью - вычисляем. А вот что хранить, а что вычислять - исходим из задачи.
Если возьмём какой-либо документ, например, счет-фактуру,
то в записях документа вычисляем цену товара
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE WAREIN (
    XWAREIN        DX /* DX = INTEGER NOT NULL */,
    XDOCIN         DX /* DX = INTEGER NOT NULL */,
    XWARE          DX /* DX = INTEGER NOT NULL */,
    COUNTS         DMASSPLUS /* DMASSPLUS = NUMERIC(10,3) DEFAULT 1 NOT NULL CHECK(value>0) */,
    SUMM           DSUMM NOT NULL /* DSUMM = NUMERIC(15,2) DEFAULT 0 */,
....................
    CENA           COMPUTED BY (SUMM/COUNTS),
................
);


Далее идём на денормализацию, и в титульной части документа храним сумму, которую не позволяем пользователю редактировать, а вычисляем в триггере на изменение (вставку, удаление) табличной части документа.
...
Рейтинг: 0 / 0
25.01.2021, 09:29
    #40038554
Gerasimenko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
zeon11,

Хоть напрямую и не относится к обсуждению, но сильно глаз режет (без обид)
интересный подход к именованиям
автор CENA COMPUTED BY (SUMM/COUNTS),
тогда уж и остальное надо:
CENA VYCHISLENIYA(SUMMA/KOLICHESTVO)
...
Рейтинг: 0 / 0
25.01.2021, 09:29
    #40038555
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
fraks
.......
Был еще у меня пролет, с типом данных и точностью. Завел в базе поле под вес товара. Ну и типа в граммах - куда еще точнее, пользователи все равно точнее не взвесят. Ну и сделал. А потом, когда начали работать с этим полем плотнее, обнаружился косяк. С товарами с малым весом. В частности это открытки. Попробуй задай вес одной открытки, а потом посчитай сколько будет весить 5000 открыток. Набирается большая ошибка. currency тут был бы очень к месту :)


Была такая-же проблема. Делал "Общепит", всю рецептуру хранил в граммах, а потом появились Приправы-специи. В блюдо идут мало, а цена на грамм большая. Выкрутился введением дополнительной таблицы пересчёта, ну типа сколько грамм в килограмме, миллиграмм в грамме, грамм в фунте и т.п. Т.е. количество так и осталось до третьего знака, но управлять процессом можно выбором соответствующих ед. измерений, а при расчете стоимости блюда приводить с помощью этой таблицы к какой-либо одной ед. измерения, хочешь - в каратах, а хочешь в тоннах
...
Рейтинг: 0 / 0
25.01.2021, 09:33
    #40038560
zeon11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Типы данных для расчётов и денежных операций, плюсы и минусы
Gerasimenko
zeon11,

Хоть напрямую и не относится к обсуждению, но сильно глаз режет (без обид)
интересный подход к именованиям
автор CENA COMPUTED BY (SUMM/COUNTS),

тогда уж и остальное надо:
CENA VYCHISLENIYA(SUMMA/KOLICHESTVO)

Принимается, самому не нравится, этой таблице уже лет 30, ещё с FoхPro
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Типы данных для расчётов и денежных операций, плюсы и минусы / 25 сообщений из 49, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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