Этот аргумент всегда имеет две стороны - десятичные и целые числа. Сторонники целых чисел утверждают, что десятичные дроби могут быть неточными (при выполнении преобразований) и что реализация BigDecimal содержит ошибки, иногда даже segfaulting.
Для моего собственного проекта я также взял целые числа, обернул их в специальный контейнер, конвертировал центы в «реальные» суммы и обратно. Сначала это казалось хорошим, но через некоторое время стало очень громоздким в использовании - отслеживание при работе с центами, при форматированных строках и т. Д.
Затем я вернулся к десятичным числам - все время в одном и том же формате, я могу легко конвертировать сумму в центы, если необходимо, я получаю различные алгоритмы округления из коробки. Я гораздо более доволен десятичными числами.
И чтобы решить проблемы с точностью до десятичных знаков - при поиске в Google вы можете заметить, что большинство ошибок связано с преобразованием десятичных знаков в числа с плавающей точкой :)
Как уже упоминалось, тиски не являются точными, и вы никогда не должны преобразовывать свои десятичные числа в число с плавающей точкой. Это единственная самая важная вещь, которую вы должны помнить при работе с десятичными числами - вы не хотите терять точность при преобразованиях.
Да, и я никогда не сталкивался с ошибками в ruby 1.8.7, 1.8.7 и 1.9.1 при широком использовании BigDecimal.