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 DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
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()); } }