2015-01-30 3 views
1

Попытка сделать небольшой скрипт для вычисления возрастающего значения базового номера на 2%. Имея проблемы с, я думаю, способ обработки с плавающей запятой. Сценарий должен рассчитать каждое число до заданного значения, но оно продолжается бесконечно.Целочисленные числа с плавающей запятой в Ruby

require 'bigdecimal' 


def multiplication sum, count 
    print "Original Sum: #{sum}\n" 
    until sum == 100 do 

     float = BigDecimal('1.02') 

     next_sum = (sum * float.round(3)) 
     print "#{count}: #{next_sum}\n" 

     count += 1 
     sum = next_sum 
    end 
end 

multiplication 2, 1 

ответ

4

Ваш сценарий зацикливается, пока сумма не будет точно 100, что не может произойти, если он прыгает от значения меньше значения больше. Измените условие цикла на это:

until sum >= 100 do 

Кроме того, «целое число с плавающей запятой» является противоречием в терминах.

+1

возможно '> =' еще лучше? –

+0

Хммм ... значение с плавающей запятой, которое точно представляет целое число, можно назвать «целым числом с плавающей запятой». Но в остальном я согласен, и другой термин или описание будет лучше. –

Смежные вопросы