logo
logo

Форум Переполнение сумм при конвертации BTC в USD

создать новую тему раскрыть все
Переполнение сумм при конвертации 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 #написать ответ