Для вашей задачи можно воспользоваться классом java.math.BigDecimal, который используется для более сложных ситуаций с округлением (вроде вашей).
Для решения вашей задачи:
- Создадим объект класса
BigDecimal
:
BigDecimal number = new BigDecimal("0.5");
- Задаём правило для округления. В примере
0
- количество цифр после запятой, ROUND_HALF_DOWN
- то, округление которое вы и желали получить: если оба соседних числа равноудалены (то есть дробная часть 5 десятых), то округление произойдёт в сторону 0, если же числа не равноудалены, то округление произойдёт по принципу "где ближе".
number = number.setScale(0, ROUND_HALF_DOWN);
И так, что вышло в итоге:
BigDecimal number1 = new BigDecimal("0.5");
BigDecimal number2 = new BigDecimal("0.50000001");
number1 = number1.setScale(0, ROUND_HALF_DOWN); //0
number2 = number2.setScale(0, ROUND_HALF_DOWN); //1