logo
logo
Вы правы,... [Dervish 06/10/2004 11:23]
алгоритмы немного изменились. Стали более корректными. И вот суть изменений:
 
В первой версии при расчёте курса использовалась не только дата, но и время операции. И тогда получалось, что $1000 в рублях в 12 часов дня совсем не было равно $1000 в рублях в 21 час того же дня. Наверное это неправильно. Во второй версии курс, даже аппроксимированный, устанавливается на целые сутки. Одно значение курса для периода с полуночи до полуночи.
 
Кроме того, если брать график остатков по счетам, в первой версии был некорректный алгоритм расчёта остатков. Работал он так: вычислялся суммарный остаток на начало периода, а дальше по всем операциям, которые попадали в график, сумма конвертировалась к нужной валюте и просто прибавлялась к начальному остатку графика. Ошибка в том, что программа просто не учитывала изменения курса по уже накопленной сумме остатка. Наблюдать это можно так: постройте график за текущий месяц и запомните конечную сумму графика. После этого перенесите дату начала графика назад на пару лет и сравните конечную сумму с той, которую вы запомнили. Если в графике счета с разными валютами, вы обязательно увидите, что суммы не совпадают.
 
Во второй версии график остатков считается немного сложнее, но правильнее. Программа создаёт по одному накопительному регистру на каждую валюту, которая участвует в графике. Вычисляется сразу начальные остатки по каждой из валют, а дальше, при обработке операций программа пересчитывает суммарный остаток исходя из курсов на каждый день. В итоге мы получаем 100% правильное значение.