|
Groovy example source code file (MortgageCalculator.groovy)
The Groovy MortgageCalculator.groovy source code/** * Mortgage Calculator * @author: Jeremy Rayner * based on algorithms by Jeff Louie, Dr W Carlini and Newton */ println "__..::~~'''~~::..__" println "Mortgage Calculator" println "~~~~~~~~~~~~~~~~~~~" println "Please input 3 of the 4 values in your mortgage calculation" println "This program will then calculate the value you leave blank" println "" def variables = [ "Amount of mortgage" : 0.0, "Annual interest rate (%)" : 0.0, "Loan duration (months)" : 0.0, "Monthly payments" : 0.0 ] for (entry in variables.entrySet()) { print("${entry.key}:") def userInput = System.in.readLine() if ("" == userInput) { valueToCalculate = entry.key } else { entry.value = userInput.toDouble() } } println "$valueToCalculate = ${calculateValueOf(valueToCalculate)}" def calculateValueOf(valueToCalculate) { def result = 0 def principal = variables["Amount of mortgage"] def interest = variables["Annual interest rate (%)"] / 1200 def months = variables["Loan duration (months)"] def payment = variables["Monthly payments"] switch (valueToCalculate) { case "Amount of mortgage": result = 1 + interest result = 1/Math.pow(result,months) result = ((1-result)/interest) * payment break case "Loan duration (months)": result = (1 - (principal * interest / payment)) result = Math.log(result) result = - result / Math.log(1 + interest) break case "Monthly payments": result = 1 + interest result = 1 / Math.pow(result,months) result = (principal * interest) / (1 - result) break case "Annual interest rate (%)": result = payment / principal def diff = 100; def accuracy = 0.00001; def maxIterations = 1000 def index = 0 while ((diff > accuracy) && (index < maxIterations)) { def temp = result def numerator = (principal * temp / payment) + Math.pow((1 + temp), -months) - 1 def denominator= (principal / payment) - months * Math.pow((1 + temp), (-months - 1)) result = temp - (numerator / denominator) diff = result - temp diff = Math.abs(diff) index++ } result *= 1200 break } return result } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy MortgageCalculator.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.