<?xml version="1.0" encoding="UTF-8"?>
<code>
  <code>cap_growth = 5

v =  (@property.current_value / 100 * cap_growth) + @property.current_value
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v
puts v
v =  (v / 100 * cap_growth) + v</code>
  <comment>there must be a better way to do this.

im doing something like the code below to calculate compund interest and print the result each year</comment>
  <created-at type="datetime">2007-09-30T12:50:38+00:00</created-at>
  <id type="integer">34</id>
  <language>Ruby</language>
  <permalink>compound-interest</permalink>
  <refactors-count type="integer">6</refactors-count>
  <title>compound interest</title>
  <trackback-url></trackback-url>
  <updated-at type="datetime">2007-09-30T12:50:38+00:00</updated-at>
  <user-id type="integer">89</user-id>
  <refactors type="array">
    <refactor>
      <code>cap_growth = 5
v += (@property.current_value / 100 * cap_growth)

for i in (0..7)
  puts v
  v +=  v / 100 * cap_growth
end</code>
      <code-id type="integer">34</code-id>
      <comment>Why don't you use a loop?
(Untested)</comment>
      <created-at type="datetime">2007-09-30T14:05:36+00:00</created-at>
      <id type="integer">137</id>
      <language>Ruby</language>
      <rating type="integer">2</rating>
      <ratings-count type="integer">3</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer">84</user-id>
      <user-name>typefreak</user-name>
      <user-website></user-website>
    </refactor>
    <refactor>
      <code>cap_growth = 5

v = @property.current_value

8.times do
  puts v += v/ 100 * cap_growth
end</code>
      <code-id type="integer">34</code-id>
      <comment>Here is the same thing, a bit shorter.
</comment>
      <created-at type="datetime">2007-09-30T15:14:25+00:00</created-at>
      <id type="integer">138</id>
      <language>Ruby</language>
      <rating type="integer">3</rating>
      <ratings-count type="integer">3</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer">90</user-id>
      <user-name>anshkakashi</user-name>
      <user-website nil="true"></user-website>
    </refactor>
    <refactor>
      <code>a = (0..8).inject([]) {|a, i| a &lt;&lt; (v += (v/100) * cap_growth)}</code>
      <code-id type="integer">34</code-id>
      <comment>I'm not sure what you are trying to do, but if you wanted to keep track of the values, you could do something like...
</comment>
      <created-at type="datetime">2007-09-30T16:29:08+00:00</created-at>
      <id type="integer">140</id>
      <language>Ruby</language>
      <rating type="integer">1</rating>
      <ratings-count type="integer">2</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer">81</user-id>
      <user-name>bauser</user-name>
      <user-website nil="true"></user-website>
    </refactor>
    <refactor>
      <code>#!/usr/bin/ruby -w
#
#  Using geometric series to calculate value of:
#   ar^n + ar^(n-1) + ... + ar^2 + ar + a 
#   
#   = a(1-r^(n+1))/(1-r)
#
#  also adding a starting savings to get:
# 
#  a(1-r^(n+1))/(1-r) + sr^n
#

puts "Enter Starting Amount"
s = gets.chomp.to_f
puts "Enter savings per year"
a = gets.chomp.to_f
puts "Enter savings rate of return"
r = gets.chomp.to_f
puts "Enter number of years"
n = gets.chomp.to_f

value = a*(1-r**(n+1))/(1-r) + s*r**n
value = (value*100).round / 100.0
puts "Saved: $#{value} in #{n} years"</code>
      <code-id type="integer">34</code-id>
      <comment>Using a simple formula to calculate the final value.  Not useful for every value, but does jump right to the end without looping.</comment>
      <created-at type="datetime">2007-10-01T07:45:49+00:00</created-at>
      <id type="integer">151</id>
      <language>Ruby</language>
      <rating type="integer">5</rating>
      <ratings-count type="integer">1</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>jtm</user-name>
      <user-website></user-website>
    </refactor>
    <refactor>
      <code>class Investment &lt; Struct.new(:start_year, :start_value, :interest_rate)

  def value_at(year)
    start_value * (1 + interest_rate) ** (year - start_year)
  end

end

# # Sample usage
# we invest 100 in 1990 at 5% interest and want to know the value per
# every year from 1990 to 2005

i = Investment.new(1990, 100, 0.05)
(1990..2005).each { |year| puts i.value_at(year) }</code>
      <code-id type="integer">34</code-id>
      <comment>This is just an example on how you can wrap the calculation in a class.
one method provide the calculation of the value at any time in the future.</comment>
      <created-at type="datetime">2007-10-01T09:38:19+00:00</created-at>
      <id type="integer">153</id>
      <language>Ruby</language>
      <rating type="integer">4</rating>
      <ratings-count type="integer">3</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer">95</user-id>
      <user-name>hungryblank</user-name>
      <user-website nil="true"></user-website>
    </refactor>
    <refactor>
      <code></code>
      <code-id type="integer">34</code-id>
      <comment>Just wanted to say thanks so much for your help.

I dont work in an environment where I can get this sort of help so it really is greatly appreciated.

Thanks again</comment>
      <created-at type="datetime">2007-10-01T14:20:53+00:00</created-at>
      <id type="integer">169</id>
      <language>Ruby</language>
      <rating type="integer">0</rating>
      <ratings-count type="integer">0</ratings-count>
      <title>On compound interest</title>
      <user-id type="integer" nil="true"></user-id>
      <user-name>Greg</user-name>
      <user-website>www.plumbly.com</user-website>
    </refactor>
  </refactors>
</code>
