На вопрос 1:
num = 1589.5833333333333
printf('%.2f', num)
=> 1589.58
Для вопроса 2 округлить до первой цифры:
num = 1589.5833333333333
printf('%.2f', num.round(1))
=> 1589.60
1589.55 - бит произвольного числа, округление в меньшую сторону обычно рассчитывается как 1589.58. Я не знаю ни одной функции Ruby, которая делает это из рук в руки.