Вопрос-ответ

Representing Monetary Values in Java [closed]

Представление денежных значений в Java

Я понимаю, что BigDecimal является рекомендуемой наилучшей практикой для представления денежных значений в Java. Что вы используете? Есть ли библиотека получше, которую вы предпочитаете использовать вместо этого?

Переведено автоматически
Ответ 1

BigDecimal полностью. Я слышал о некоторых людях, создающих свои собственные классы Cash or Money, которые инкапсулируют денежное значение с валютой, но под оболочкой это все еще BigDecimal, вероятно, с BigDecimal.ROUND_HALF_EVEN округлением.

Редактировать: Как упоминает Дон в своем ответе, существуют проекты с открытым исходным кодом, такие как timeandmoney, и хотя я приветствую их за попытку избавить разработчиков от необходимости изобретать велосипед, я просто недостаточно уверен в библиотеке pre-alpha, чтобы использовать ее в производственной среде. Кроме того, если вы покопаетесь под капотом, вы увидите, что ониBigDecimalтоже используют.

Ответ 2

Людям, попадающим сюда с помощью поисковых систем, может быть полезно узнать о JodaMoney: http://www.joda.org/joda-money / .

Ответ 3

Я не выражаю здесь своего мнения, но есть довольно веские аргументы против BigDecimal, которые кому-то, вероятно, следует отбросить:

http://lemnik.wordpress.com/2011/03/25/bigdecimal-and-your-money/

Ответ 4

Удобная библиотека, с которой я сталкивался ранее, - это библиотека Joda-Money. Одна из ее реализаций действительно основана на BigDecimal . Он основан на ISO-4217 спецификации для валют и может поддерживать настраиваемый список валют (загружаемый через CVS).

Эта библиотека содержит небольшое количество файлов, которые можно быстро просмотреть, если потребуются изменения. Joda-Money публикуется по лицензии Apache 2.0.

java