Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. struct Arguments {
  2. // milli-dollars ( $15 = 15000)
  3. starting_value: i64,
  4. // milli-dollars
  5. contrib: i64,
  6. // percentage in milli-percent ( 13% = 13_000, 100% = 100_000 )
  7. apr: i64,
  8. // deci-cents and milli-percent gives us a maximum balance near 922 billion dollars before we overflow
  9. contrib_years: usize,
  10. // deci-cents
  11. withdraw_amount: i64
  12. }
  13.  
  14. struct Balance {
  15. // deci-cents
  16. value: i64
  17. }
  18.  
  19. fn main() {
  20. let args = Arguments {
  21. starting_value: 16000_00_0,
  22. contrib: 1200_00_0,
  23. apr: 5_000,
  24. contrib_years: 20,
  25. withdraw_amount: 7100_00_0,
  26. };
  27.  
  28. let months = args.contrib_years * 12;
  29. let mpr = args.apr/12;
  30. println!("Final monthly milli percentage is {}", mpr);
  31.  
  32. let mut balance = Balance {
  33. value: args.starting_value
  34. };
  35.  
  36. let mut year = 0;
  37. for i in 1..months+1 {
  38. // apply last months percentage first
  39. let interest = (balance.value * mpr) / 1_00_000;
  40. // add this months contribution
  41. let new = balance.value + interest + args.contrib;
  42. //println!("{}. Increase by {} and contribute {} makes about {}.", i, interest as f64 / 1000f64, args.contrib as f64 / 1000f64, new as f64 / 1000f64);
  43. balance.value = new;
  44.  
  45. if i % 12 == 0 {
  46. println!("Year {} : ${}.{}", i/12, balance.value / 1000, balance.value%1000);
  47. }
  48. }
  49.  
  50. println!("Max balance is ${}.{}", balance.value / 1000, balance.value%1000);
  51.  
  52. // start burn down
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement