我该如何编写数学公式?

时间:2015-12-04 16:08:22

标签: ruby formula

我需要在代码中编写以下公式:

C ((i/100)(n/365)+1)

这意味着i应除以100,n应除以365,两个结果必须相乘,结果数应加1,结果数应乘以{ {1}}。

我能够编写以下代码,但是数学运算中出现了一个我无法解决的错误:

C

2 个答案:

答案 0 :(得分:1)

试试这个:

investment_calculation = money_invested * (((interest_rate / 100) * (time_investment / 365) + 1))

1)您使用[]代替()

ruby []中的

对应列表

2)您需要使用*乘以(interest_rate / 100)(time_investment / 365)

的结果

修改

如果您使用的是小数,则代码无效,您需要使用to_f代替to_i

像这样:interest_rate = gets.to_f

答案 1 :(得分:1)

当你在Ruby中划分两个整数时,你得到整数除法(结果是一个整数):

irb(main):001:0> 1343/1000
#=> 1

如果你想要一个浮点数,那么你需要两个数中至少有一个是浮点值:

irb(main):002:0> 1343/1000.0
#=> 1.343
irb(main):003:0> 1343.0/1000
#=> 1.343

您可以通过将用户输入为浮点数而不是整数(使用to_f而不是to_i),或使用公式中的浮点常量来完成此操作。如果用户在50.75中输入他们的钱,第一个就足够了,也是有意义的。 ("50.75".to_i #=> 50

puts "Insert money to invest:"
money_invested = gets.to_f

puts "Indicate in days the period of deposit:"
time_investment = gets.to_f

puts "Indicate interest rate:"
interest_rate = gets.to_f

investment_calculation = money_invested * (1 + interest_rate/100 * time_investment/365)
puts "Your refund will be $%.2f." % investment_calculation

请注意,我已使用String#%方法将%.2f格式化为两位小数。这是因为3.round(2)会根据需要生成数字3.0而不是字符串"3.00"