Мы знаем, что использование float или double - это не тот вариант, где правильная точность необходима, и мы знаем, что BigDecimal служит этой цели, но мы также знаем, что она примерно в 100 раз медленнее обычных примитивных операций.Денежная точность в Java (не BigDecimal)
Теперь что нам делать, если скорость для нас важна, и нам действительно нужна точность?
Я попытался сохранить стоимость валюты в самой медленной единице и сохранить ее конверсию, как 1 BTC = 100000000 сатоши, но после нескольких экспериментов ясно, что вы просто не сможете хранить 100BTC в длине, превышает максимально возможное значение. Да, есть возможность жертвовать точностью, как хранение microBTC и т. Д., Но проблема более глобальная, как мы разрабатываем такую вещь с примитивами?
Я не нашел 'BigDecimal' против примитивов, чтобы стать узким местом. Вы уверены, что это слишком медленно для ваших нужд? – Kon
Да, простой микро-тест показывает, что, кроме того, очевидно, что вы создаете неизменяемый объект каждый раз, он просто не может быть узким местом, когда вам нужна скорость ... – vach
Я могу найти статью, где экспертный Java-разработчик HFT заявляет, что BigDecimal сосет как 100 раз по сравнению с примитивными типами – vach