Используйте BigDecimal
вместо float
/ double
. Существует множество чисел, которые не могут быть представлены как двоичная с плавающей запятой (например, 0.1
). Таким образом, вы либо должны всегда округлять результат до известной точности, либо использовать BigDecimal
.
Для получения дополнительной информации см. http://en.wikipedia.org/wiki/Floating_point .