def series_sum(n)
return "0.00" if n.zero?
sprintf("%.2f", (0..n-1).sum { |m| 1.fdiv(3*m+1) }.round(2))
end
series_sum(0) #=> "0.00"
series_sum(1) #=> "1.00"
series_sum(2) #=> "1.25"
series_sum(3) #=> "1.39"
series_sum(4) #=> "1.49"
series_sum(5) #=> "1.57"
См. Ядро # sprintf .В качестве альтернативы можно использовать String% , который разделяет директивы форматирования sprintf
:
"%.2f" % (0..n-1).sum { |m| 1.fdiv(3*m+1) }.round(2)
Я не знаю о существовании выражения в закрытой форме для этой частичной суммы.Хотя эта частичная сумма не относится к данному вопросу, можно показать, что она расходится.