Переполнение сумм при конвертации BTC в USD
bishop
04/03/2021 21:06
#
Добавлена валюта BTC с 8 знаками после запятой.
Добавлен текущий курс 48 000 USD = 1 BTC
Для примера создано два счета, на одном 1 BTC, на втором 2 BTC.
При опции пересчитать остатки в валюте USD
остатки отображаются как 48 000 USD и -88 000.44.
Как можно обойти это своими силами?
Можно ли расчитывать на доработку для работы с криптовалютами (подозреваю актуально для других тоже).
Надо делать немного иначе
Dervish
05/03/2021 00:41
#
Исправьте курс на 0,001 BTC = 48 USD и переполнения не будет.
Дело в том, что программа всегда использует целочисленную арифметику. И когда Вы указываете для валюты точность в 8 знаков после запятой, то суммы все равно будут представляться виде целых значений. Только младшие 10 десятичных разрядов (заказанные 8 и еще 2 дополнительные для правильных округлений) будут считаться, что они находятся после запятой. Ну и программа правильным образом отформатирует их при выводе.
Из-за этого и возникает переполнение. Потому что 1 BTC будет храниться как целое 10000000000. А вот если исправить значения курса так, как я предложил, то проблема уйдет.
Спасибо (-)
bishop
05/03/2021 16:31
#