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$
我想创建一个 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$