Целочисленные типы
Неправильно использовать большинство целочисленных типов данных для представления валют из-за:
- очень ограниченное представимое значение диапазон в отношении общих применений;
- наложение дополнительная нагрузка на обработку дробные значения .
В частности, ограниченный диапазон значений может быть серьезной проблемой с более коротким целым типом. Давайте рассмотрим общее 32-разрядное целое число со знаком (обычно int
):
- диапазон значений от прибл. От -2,15 млрд. До +2,15 млрд. - это само по себе не вариант для любого учета / банковского дела / серьезного финансового использования;
- когда для представления дробной части используются только две последние цифры, диапазон сокращается до -21,5 миллионов до +21,5 миллионов ;
- в случае, если умножение должно работать (не говоря о вычислениях смешанной точности), диапазон уменьшается еще больше.
С 64-разрядным целым числом со знаком (обычно long
) вы можете считать до 92 тысяч триллионов. Когда мы думаем о мировой экономике, деньги исчисляются триллионами, поэтому это не разумный вариант.
Типы с плавающей точкой
Это плохая идея использовать типы данных с плавающей точкой , потому что они неточны по своей природе, что является фатальной проблемой для подавляющего большинства денежных расчетов.
Подходящие типы данных
Очень хорошая идея использовать типы данных с фиксированной или десятичной точкой, потому что они обычно не имеют отрицательных свойств как типы данных с плавающей точкой и целые числа:
- диапазон представимых значений достаточно широк;
- Точность может быть скорректирована путем округления в соответствии с требованиями расчета;
- нет путаницы благодаря обработке естественных дробных значений;
- точное представление десятичного числа.
И последнее, но не менее важное: подходящий тип данных сильно зависит от языка и его возможностей.
Другие проблемы
Кроме того, во многих сценариях расчета необходимо использовать различную точность для промежуточных расчетов и для результирующих значений. Хотя результаты обычно должны представляться с точностью, определенной для конкретной валюты соответствующим законом, промежуточные вычисления могут включать промежуточные результаты с более высокой точностью. Примерами являются процентные расчеты по платежам по кредитам, страховым расходам и т. Д. Или конвертации валют, когда обменные курсы часто приводятся с большей точностью.
Мультивалютные программы также должны учитывать тот факт, что разные валюты имеют разную законную точность. Округление может быть наложено по стандартам бухгалтерского учета.