24. januar 2012 - 20:11
Der er
7 kommentarer og 1 løsning
beregning af lån
Hejsa. Hvis man skal beregne et lån i excel, hvor man også får alle afdrag med osv, hvordan kan man gøre det. Fx: Hovedstol: 60.000 kr. Rente: 8,750% Afdrag 3000 kr Hvis man nu skal beregne løbetiden ud fra dette, og man skal have den ud i en tabel, hvor alle beløbene kommer op, fx: 01.02-2012: 57.000 01.03-2012: 54.000 01.04-2012: 51.000 osv. Mvh Julie
Annonceindlæg fra Deloitte
24. januar 2012 - 21:18
#2
og den sjove - nogle banker har lagt betaling ind hver måned, og kvartalsvis rentetilskrivning. Så er der 4 terminer, og to ud af tre måneder vil låner betale 'forud' uden at få en 10-øre i rente. Der har banken så det indbetalte stående gratis.
28. januar 2012 - 04:33
#8
Java !! :-) import java.math.BigDecimal; public class LoanCalculations { private static void display(Loan loan) { while(!loan.isPaid()) { System.out.printf("%2d %10.2f %10.2f %10.2f %10.2f\n", loan.getPeriod(), loan.getPrincipalBalance(), loan.getInterestPaid(), loan.getPrincipalPaid(), loan.getPayment()); loan.moveOnePeriod(); } } public static void main(String[] args) { display(new FixedPrincipalPaidLoan(new BigDecimal("60000.00"), 0.08750/12, new BigDecimal("3000.00"))); display(new FixedPrincipalPaidLoan(new BigDecimal("60000.00"), 0.08750/12, 20)); display(new FixedPaymentLoan(new BigDecimal("60000.00"), 0.08750/12, new BigDecimal("3000.00"))); display(new FixedPaymentLoan(new BigDecimal("60000.00"), 0.08750/12, 22)); display(new FixedPaymentLoan(new BigDecimal("60000.00"), new BigDecimal("2961.78"), 22)); } } abstract class Loan { private BigDecimal principal; private double interest; private int period; public Loan(BigDecimal principal, double interest) { this.principal = principal; this.interest = interest; this.period = 1; } public boolean isPaid() { return principal.signum() < 1; } public void moveOnePeriod() { principal = principal.subtract(getPrincipalPaid()); period++; } public int getPeriod() { return period; } public BigDecimal getPayment() { return getPrincipalPaid().add(getInterestPaid()); } public BigDecimal getInterestPaid() { return principal.multiply(new BigDecimal(interest)).setScale(2, BigDecimal.ROUND_HALF_UP); } public BigDecimal getPrincipalPaid() { BigDecimal unadj = getPrincipalPaidUnadjusted(); if(getPrincipalBalance().doubleValue() >= unadj.doubleValue()) { return unadj; } else { return getPrincipalBalance(); } } public BigDecimal getPrincipalBalance() { return principal; } protected abstract BigDecimal getPrincipalPaidUnadjusted(); } class FixedPrincipalPaidLoan extends Loan { private BigDecimal principalPaid; public FixedPrincipalPaidLoan(BigDecimal principal, double interest, int periods) { super(principal, interest); this.principalPaid = principal.divide(new BigDecimal(periods)); } public FixedPrincipalPaidLoan(BigDecimal principal, double interest, BigDecimal principalPaid) { super(principal, interest); this.principalPaid = principalPaid; } public BigDecimal getPrincipalPaidUnadjusted() { return principalPaid; } } class FixedPaymentLoan extends Loan { private static final double EPS = 0.00000001; private static double alfa(double interest, int periods) { return (1 - Math.pow(1 + interest, -periods)) / interest; } private static double invalfa(double targetalfa, int periods) { double interest = 0.0001; double previnterest; do { previnterest = interest; interest = interest - (alfa(interest, periods) - targetalfa) / ((alfa(interest + EPS, periods) - alfa(interest, periods)) / EPS); } while(Math.abs(interest - previnterest) > EPS); return interest; } private BigDecimal payment; public FixedPaymentLoan(BigDecimal principal, double interest, BigDecimal payment) { super(principal, interest); this.payment = payment; } public FixedPaymentLoan(BigDecimal principal, double interest, int periods) { super(principal, interest); this.payment = new BigDecimal(principal.doubleValue() / alfa(interest, periods)).setScale(2, BigDecimal.ROUND_HALF_UP); } public FixedPaymentLoan(BigDecimal principal, BigDecimal payment, int periods) { super(principal, invalfa(principal.doubleValue() / payment.doubleValue(), periods)); this.payment = payment; } public BigDecimal getPrincipalPaidUnadjusted() { return payment.subtract(getInterestPaid()); } }