BigDecimal вас спасет. И да, с даблом такое сплошь и рядом. Пример не в кассу, но показателен.
Double toBeTruncated = new Double("3.5789055");
Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
.setScale(3, RoundingMode.HALF_UP)
.doubleValue();