Ruby 红宝石。如何在一笔1000美元的投资中写出一年1%的利润率循环

Ruby 红宝石。如何在一笔1000美元的投资中写出一年1%的利润率循环,ruby,loops,methods,iterator,percentage,Ruby,Loops,Methods,Iterator,Percentage,我想创建一个ruby程序来计算我一年中每天投资的1%。 例如,如果我投资1000美元,在一天结束时获得1%的利润,第二天我将投资1010.0美元,我将获得1020.1美元的1%利润,依此类推。 我想在365天后确定我的初始投资。 我试图用一个循环来打印每一个返回值,但正如你们所看到的,我仍然是一个超级新手。 谢谢萨姆 我一个人做的!谢谢你的回答 money = 1000 days = 0 perc = 0.01 while days < 366 puts days puts mo

我想创建一个ruby程序来计算我一年中每天投资的1%。 例如,如果我投资1000美元,在一天结束时获得1%的利润,第二天我将投资1010.0美元,我将获得1020.1美元的1%利润,依此类推。 我想在365天后确定我的初始投资。 我试图用一个循环来打印每一个返回值,但正如你们所看到的,我仍然是一个超级新手。 谢谢萨姆

我一个人做的!谢谢你的回答

money = 1000
days = 0
perc = 0.01

while days < 366
  puts days
  puts money
  days += 1
  money = money * perc + money
end
money=1000
天数=0
perc=0.01
而天数<366天
把天
放钱
天数+=1
金钱=金钱*perc+金钱
结束

以下内容非常简单,但可以完成任务。基本上,将变量初始化为1000,然后循环365次。我们有一个街区,所有的数学都发生在那里。它取值1000乘以1.01,并覆盖初始投资的值。您可以将365天更改为2天或任意天数。puts打印起始值。只需将其放入.rb文件并运行“ruby file.rb”即可

start = 1000
365.times do
  start = start*1.01
  puts start
end

puts start

以下内容非常简单,但可以完成工作。基本上,将变量初始化为1000,然后循环365次。我们有一个街区,所有的数学都发生在那里。它取值1000乘以1.01,并覆盖初始投资的值。您可以将365天更改为2天或任意天数。puts打印起始值。只需将其放入.rb文件并运行“ruby file.rb”即可

start = 1000
365.times do
  start = start*1.01
  puts start
end

puts start
您不需要为此编写程序;这是一个单线计算

但是,如果您想一天一次完成,并显示每天的输出,那么:

money = 1000
(1..365).each do |day|
  money *= 1.01
  puts "After #{day} days: $#{money.round(2)}"
end
您不需要为此编写程序;这是一个单线计算

但是,如果您想一天一次完成,并显示每天的输出,那么:

money = 1000
(1..365).each do |day|
  money *= 1.01
  puts "After #{day} days: $#{money.round(2)}"
end
在处理货币价值时,应使用而不是
Float

require 'bigdecimal'

money      = BigDecimal('1000')
percentage = BigDecimal('0.01')
对于我使用的循环,它非常直观:

1.upto(365) do |day|
  money += (money * percentage).round(2)
  printf("%3d: %8.2f$\n", day, money)
end
  • money*percentage
    计算当天的利润,通过四舍五入到2位数。您可以通过传递第二个参数来调整
  • 然后使用给定格式输出日期和货币:
    • %3d
      打印宽度为3的整数
    • %8.2f
      打印一个带有2个小数位数、总宽度为8的浮点
输出:

  1:  1010.00$
  2:  1020.10$
  3:  1030.30$
     ...
363: 37039.07$
364: 37409.46$
365: 37783.55$
在处理货币价值时,应使用而不是
Float

require 'bigdecimal'

money      = BigDecimal('1000')
percentage = BigDecimal('0.01')
对于我使用的循环,它非常直观:

1.upto(365) do |day|
  money += (money * percentage).round(2)
  printf("%3d: %8.2f$\n", day, money)
end
  • money*percentage
    计算当天的利润,通过四舍五入到2位数。您可以通过传递第二个参数来调整
  • 然后使用给定格式输出日期和货币:
    • %3d
      打印宽度为3的整数
    • %8.2f
      打印一个带有2个小数位数、总宽度为8的浮点
输出:

  1:  1010.00$
  2:  1020.10$
  3:  1030.30$
     ...
363: 37039.07$
364: 37409.46$
365: 37783.55$

在命名方面,重新分配
start
感觉很奇怪。这是起始值,不是正在运行的计数器。:)在命名方面,重新分配
start
感觉很奇怪。这是起始值,不是正在运行的计数器。:)你可能需要对每一笔利润进行取整,而不仅仅是结果。你不应该使用浮动。我不在金融部门工作,这不是企业级的解决方案。。。但是,是的,如果你曾经在重要的系统中处理过数字,那么你就永远不应该使用浮点数,否则当一分钱被四舍五入时,你会得到细微的误差!此外,如果你计算的钱不是你的,可能会有法律规定何时以及如何取整。你可能需要取整每一笔利润,而不仅仅是结果。你不应该使用浮动。我不在金融部门工作,这不是企业级的解决方案。。。但是,是的,如果你曾经在重要的系统中处理过数字,那么你就永远不应该使用浮点数,否则当一分钱被四舍五入时,你会得到细微的误差!此外,如果你计算的钱不是你的,可能有法律规定何时以及如何取整。美元符号通常出现在指定金额的左边。@SagarPandya确实,我只是采用OP问题的格式。美元符号通常出现在指定金额的左边。@SagarPandya确实,我只是从OP的问题中选取了格式。