使用Ruby实现复杂/长的公式

时间:2015-02-07 14:34:22

标签: ruby

我正在尝试制作一个小程序来计算支付信用卡所需的时间,我发现this equation online

enter image description here

这是我到目前为止所做的事情(在我尝试函数之前,只是想让方程式与虚拟数据一起工作)。但是我总是在输入和意外结束时遇到错误(如果人们有机会,我会很乐意帮助。谢谢!

card_length = ((0.06/365)/30) * ((log(1+(14000/200)(1-(1+0.06)^30)))/log(1+0.06))

2 个答案:

答案 0 :(得分:2)

您可能需要将log方法调用更改为Math.log来电。此外,您在第二部分中缺少乘法运算符,并且使用**计算Ruby中的幂,因此:

card_length = ((0.06/365)/30) * ((Math.log(1+(14000/200)*(1-(1+0.06)**30)))/Math.log(1+0.06))

答案 1 :(得分:2)

该公式没有得到很好的解释,也没有任何示例值来测试解决方案。但无论如何,试试这个:

class CreditCard
  def initialize(balance: b, monthly_payment: m, annual_interest_rate: a)
    @balance = balance
    @monthly_payment = monthly_payment
    @annual_interest_rate = annual_interest_rate
  end

  def how_long
    (-1 / 30) * (numerator / denominator)
  end

  def daily_interest_rate
    @annual_interest_rate / 365
  end

  def b_by_p
    @balance / @monthly_payment
  end

  def one_plus_i
    1 + daily_interest_rate
  end

  def numerator
    Math.log(1 + b_by_p * (1 - (one_plus_i)**30))
  end

  def denominator
    Math.log one_plus_i
  end
end

CreditCard.new(balance: 1500, monthly_payment: 500, annual_interest_rate: 0.10).how_long # => 91.50823668064119