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