Probleem: jaarlijkse intrest (FOR-lus)

Status
Niet open voor verdere reacties.

gast0187

Gebruiker
Lid geworden
4 nov 2012
Berichten
266
Ik heb een startkapitaal, vaste intrestvoet, duurtijd (geef ik zelf in via tekstvakken)

Probleem: ik wil in textbox hoeveel je eindkapitaal elk jaar zal bedragen

Mijn huidige code:

Code:
Public Class Form1
    Private Sub cmdBereken_Click(sender As Object, e As EventArgs) Handles cmdBereken.Click
        Dim startkapit As Double = Double.Parse(txtstartkapitaal.Text)
        Dim intrestvoet As Double = Double.Parse(txtintrest.Text)
        Dim duurtijd As Integer = Integer.Parse(txtduurtijd.Text)
        Dim eindkapitaal As Double
        Dim i As Integer

        eindkapitaal = startkapit * intrestvoet / 100

        For i = 1 To duurtijd
            txtres.Text = i & " e jaar : " & eindkapitaal & vbNewLine
            eindkapitaal += startkapit
        Next
    End Sub
End Class

kan iemand mij helpen?
 
Hoi gast0187,
Je stuurde me hierover ook een privé-mailtje, of ik bij deze vraag op het forum kon helpen.
Helaas, not me: ik heb geen enkel verstand van Visual Basic. :confused:

Hopelijk weet iemand anders raad.

Met vriendelijke groet,
CSShunter
 
Ok, Alvast bedankt voor de moeite.
 
Laatst bewerkt door een moderator:
Volgens mij komt dit aardig in de buurt:

[cpp] Const startKap As Decimal = 2000 ''//2000 euro
Const rente As Double = 5 ''//5%
Dim duurtijd As Integer = 5 ''//5 jaar

Dim eindKap As Decimal = startKap
For i As Integer = 1 To duurtijd
eindKap -= (eindKap * rente / 100)
Next[/cpp]
 
Joz, gebruik ik je code verkeerd, of klopt je code niet helemaal?

[CPP] Dim StartKapitaal As Decimal = 2000 ''//2000 euro
Dim Rente As Double = 5 ''//5%
Dim Duurtijd As Integer = 5 ''//5 jaar

For i As Integer = 1 To Duurtijd Step 1
TextBox1.Text &= Math.Round(StartKapitaal * ((1 + (Rente / 100)) ^ i), 2) & vbNewLine
Next[/CPP]
Ik zou persoonlijk zoiets doen. Ik heb het nagerekend, dus of ik heb ook dat fout gedaan, of het klopt :d

MartinJM
 
Het is toch zo dat er steeds de rente moet worden afgetrokken van het startkapitaal?
 
Hangt van het onderwerp af... Bij sparen gaat het er bijvoorbeeld bij.

En ook de TS is bezig met optellen, dus dat suggereert ook dat dat de bedoeling is.

[edit]
Anders zou ik het zo doen (niet nagerekend, maar het zou moeten kloppen):
Het verschil is 1 +je, wat een - wordt.
[/edit]
[CPP] Dim StartKapitaal As Decimal = 2000 ''//2000 euro
Dim Rente As Double = 5 ''//5%
Dim Duurtijd As Integer = 5 ''//5 jaar

For i As Integer = 1 To Duurtijd Step 1
TextBox1.Text &= Math.Round(StartKapitaal * ((1 - (Rente / 100)) ^ i), 2) & vbNewLine
Next[/CPP]
 
Laatst bewerkt:
Hallo,

Dankje allebei JoZ1 en MartinJM ik heb gevonden wat ik zocht.

Wat mijn bedoeling is was dat het eindkapitaal steeds hoger moest.

Dus MartinJM, je eerste versie was dus wat ik zocht.

Bedankt hiervoor.

Kan je alleen eens uitleggen dit regeltje code (wat binnenin de for-lus staat):

Code:
TextBox1.Text &= Math.Round(StartKapitaal * ((1 + (Rente / 100)) ^ i), 2) & vbNewLine

t.o.v.

Code:
TextBox1.Text &= startkapit + (rente / 100) & vbNewLine

waarom is het 2e fout?

Alvast op voorhand bedankt.

Mvg gast0187
 
Laatst bewerkt:
De berekening is foutief.
 
Laatst bewerkt:
Die formule zie ik nu voor het eerst.

Kan je even uitleggen?

En nog een vraagje:

Is het nodig om die berekening via zo'n lange omweg te doen of kan je in vb ook met procenttekens(bvb. als je 10% ingeeft in het tekstvak) onmiddelijk rekenen?

Mvg gast0187
 
40101131637a8de869e2a5acf3e3f9fc.png


FV = Eindkapitaal
PV = Startkapitaal
i = Rente
t = Tijdsduur

Gewoon invullen als volgt.

[CPP]Eindkapitaal = Math.Pow(Startkapitaal*(1+intrestvoet),tijdsduur)[/CPP]

Omdat dit een exponentiële functie is, wordt het zo'n berekening ;)

Om gewoon procent uit te rekenen:
[cpp]rente = x ''//x%
eindkapitaal = startkapitaal * (1 + (rente/10))[/cpp]
Je vermenigvuldigt dus eigenlijk met 1,1 (in het geval van 10%)
 
Laatst bewerkt:
Met procenten heb ik dus deze code:

Code:
Public Class Form1
    Private Sub cmdBereken_Click(sender As Object, e As EventArgs) Handles cmdBereken.Click
        Dim startkapit As Double = Double.Parse(txtstartkapitaal.Text)
        Dim rente As Double = Double.Parse(txtintrest.Text)
        Dim duurtijd As Integer = Integer.Parse(txtduurtijd.Text)
        Dim i As Integer

        For i = 1 To duurtijd
            txtres.Text &= startkapit * (1 + (rente / 10)
        Next
    End Sub
End Class

En bij uitvoeren programma als ik de eindkapitalen wil berekenen krijg ik deze foutmelding:

An unhandled exception of type 'System.FormatException' occurred in mscorlib.dll

Additional information: Input string was not in a correct format.
 
Dan gaat het in één van de volgende regels mis:

[cpp]Dim startkapit As Double = Double.Parse(txtstartkapitaal.Text)
Dim rente As Double = Double.Parse(txtintrest.Text)
Dim duurtijd As Integer = Integer.Parse(txtduurtijd.Text)[/cpp]

Wat zijn de waarden van die textboxen?
 
En het is dus onmogelijk om een procentteken in te geven in de textbox rente zonder errors te krijgen bij het debuggen?
 
Nee hoor.

Zet dit er maar voor:
[cpp]TextBox.Text = TextBox.Replace("%","")[/cpp]
 
Ik krijg nog steeds errors:

Code:
Public Class Form1
    Private Sub cmdBereken_Click(sender As Object, e As EventArgs) Handles cmdBereken.Click
        Dim startkapit As Double = Double.Parse(txtstartkapitaal.Text)
        txtintrest.Text = txtintrest.Replace("%", "")
        Dim rente As Double = Double.Parse(txtintrest.Text)
        Dim duurtijd As Integer = Integer.Parse(txtduurtijd.Text)
        Dim i As Integer

        For i = 1 To duurtijd
            
            txtres.Text &= startkapit * (1 + (rente / 10))
        Next
    End Sub
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan