Допустим, ваше базовое значение: 39,92 .Ваша разметка 20 .
Целочисленное деление приведет к следующему:
20 / 100
# => 0
Таким образом, irb - правильное направление.Это дает лучшие результаты:
20.to_f / 100
# => 0.2
Таким образом, окончательный расчет будет выглядеть следующим образом:
final_value = (base_value + (markup.to_f / 100) * base_value).round
Это даст вам ожидаемое значение.
Поскольку вы этого не сделаетеНе обращая внимания на округленный результат, можно получить правильный результат, используя целочисленное деление:
final_value = base_value + base_value * markup / 100