Ruby。如何在 1000 美元的投资上编写一年 1% 百分比利润的循环

Ruby. How to write a loop of 1% percentage profit for one year on a 1000$ investment

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

我一个人完成的!感谢您的所有回答!

money = 1000
days = 0
perc = 0.01

while days < 366
  puts days
  puts money
  days += 1
  money = money * perc + money
end

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

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

puts start
1000 * 1.01**365
#=> 37783.43433288728

你不需要为此编写程序;这是一个单行计算。

但是如果你想一次做一天并显示每一天的输出,怎么样:

money = 1000
(1..365).each do |day|
  money *= 1.01
  puts "After #{day} days: $#{money.round(2)}"
end

在处理货币值时,您应该使用 BigDecimal 而不是 Float

require 'bigdecimal'

money      = BigDecimal('1000')
percentage = BigDecimal('0.01')

对于循环,我会使用 upto,它非常直观:

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

输出:

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