Я использую BigDecimal, но в конце (line 87), чтобы не терять точность.