Probleem: jaarlijkse intrest (FOR-lus)

Status
Niet open voor verdere reacties.
Dankje cssHunter

nu geeft hij geen errors meer voor dat procentteken, maar de eindkapitalen kloppen nu niet meer.

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.Text.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)) & vbNewLine
        Next
    End Sub
End Class

Bekijk bijlage 168013
 
Laatst bewerkt:
Als je (1 + (rente / 10)) gebruikt, en de rente is 10, dan is de uitkomst: (1+ 10/10)=2.
Dan wordt op elke regel voor de duurtijd (in jaren, moet er even bij gezet worden!): startkapit * (1 + (rente / 10)) = 2*startkapitaal.
Klopt met de uitkomsten! *) ;)

Maar de rente wordt opgegeven in % = 1/100 en niet 1/10.
Dus zou ik zeggen: (1 + (rente / 100))

Met vriendelijke groet,
CSShunter
___________
*) Zo wil ik ook wel met 10% rente mijn startkapitaal na een jaar verdubbeld zien! :D
 
Laatst bewerkt:
nu krijg ik true als antwoord:

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.Text.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 Step 1
            txtres.Text &= startkapit * (1 + (rente / 100)) & vbNewLine
            txtres.Text = startkapit * (1 + (rente / 10)) = 2 * startkapit
        Next
    End Sub
End Class
 
Het regeltje txtres.Text = startkapit * (1 + (rente / 10)) = 2 * startkapit is er te haastig in gezet, dat hoort er helemaal niet in!


  • Deze regel vervangt dan alle eerdere berekeningen, en het is altijd waar dat:
    startkapit * (1 + (rente / 10)) = 2 * startkapit,
    want (zoals boven) de uitkomst van het linkerdeel is ook 2*startkapitaal. Dus: true!
  • Maar dat geldt alleen als voor de rente 10 is ingevuld. Vul je wat anders in, dan zal het false worden.
 
Laatst bewerkt:
Ik krijg als resultaat zonder dat regeltje

5500
5500
5500
5500
5500

5500 is correct voor 1 jaar maar die andere jaren willen niet mee.
 
Kijk nog eens goed naar mijn eerste post. Je mist namelijk een cruciaal element...

MartinJM
 
Het regeltje txtres.Text = startkapit * (1 + (rente / 10)) = 2 * startkapit is er te haastig in gezet, dat hoort er helemaal niet in!


  • Deze regel vervangt dan alle eerdere berekeningen, en het is altijd waar dat:
    startkapit * (1 + (rente / 10)) = 2 * startkapit,
    want (zoals boven) de uitkomst van het linkerdeel is ook 2*startkapitaal. Dus: true!
  • Maar dat geldt alleen als voor de rente 10 is ingevuld. Vul je wat anders in, dan zal het false worden.

Dat snap ik niet dus : startkapit * (1 + (rente / 10)) = 2 * startkapit

startkapit = 5000
rente = 10%

5000*(1+(10%/10)) = 2*5000
5050 = 10000 ???
 
Nop, de % heb je er uit gefietst bij de invulling.
Je geeft een getal op in de eenheid %; dus als ik 25 invul en bedoel 25%, dan moet de berekening worden: 25/100.


  • En als ik 25% invul, en de "%" er met de vervang-functie van laat afhakken, geef ik ook nog steeds 25 op, dus moet het ook 25/100 worden.
 
Laatst bewerkt:
Kant en klare code:
[CPP] Dim TxtStartBedrag As String = TxtBoxStartBedrag.Text
Dim TxtRente As String = TxtBoxRente.Text
Dim TxtLooptijd As String = TxtBoxLooptijd.Text

If Not IsNumeric(TxtStartBedrag.Replace(".", ",")) Or Not IsNumeric(TxtRente.Replace("%", "")) Or Not IsNumeric(TxtLooptijd) Then
MsgBox("Je mag alleen getallen invoeren.")
Exit Sub
End If

Dim StartKapitaal As Decimal = CDec(TxtStartBedrag.Replace(".", ","))
Dim Rente As Double = CDbl(TxtRente.Replace("%", ""))
Dim Duurtijd As Integer = CInt(TxtBoxLooptijd.Text)

TxtBoxUitkomst.Text = Nothing

For i As Integer = 1 To Duurtijd Step 1
TxtBoxUitkomst.Text &= Math.Round(StartKapitaal * ((1 + (Rente / 100)) ^ i), 2) & vbNewLine
Next[/CPP]

In de eerste 3 regels je textboxen invoeren, en in de een-na-laatste regel moet je er ook nog een invoeren. Dan zou alles moeten werken. Inclusief het verschil tussen de . (punt) en de , (komma). En dat er alleen getallen ingevoerd kunnen worden.

MartinJM

[edit]
BTW: 5000*(1+(10%/10)) = 5000 * (1 + ( 10 / 10 )) = 5000 * (1 + 1) = 5000 * 2 = 10 000
[/edit]
 
Laatst bewerkt:
Deze code werkt:

Code:
Public Class Form1
    Private Sub cmdBereken_Click(sender As Object, e As EventArgs) Handles cmdBereken.Click
        Dim StartKapitaal As Decimal = CDec(txtstartkapitaal.Text.Replace(".", ","))
        Dim Rente As Double = CDbl(txtintrest.Text.Replace("%", ""))
        Dim Duurtijd As Integer = CInt(txtduurtijd.Text)

        txtres.Text = Nothing

        For i As Integer = 1 To Duurtijd Step 1
            txtres.Text &= Math.Round(StartKapitaal * ((1 + (Rente / 100)) ^ i), 2) & vbNewLine
        Next
    End Sub
End Class

Dankje allemaal voor de moeite.(probleem wordt beschouwd als opgelost)

Mvg gast0187
 
Laatst bewerkt:
Als je alleen het eindresultaat wilt weten, en niet een rijtje van wat het per jaar is (dat is bij niet-samengesteld toch hetzelfde), kan je dan niet net zo goed een vermenigvuldiging met de duurtijd uitvoeren?

TxtBoxUitkomst.Text = StartKapitaal + (Duurtijd * Rente/100 * Startkapitaal)


  • Eventueel zou je ook de duurtijd kunnen laten opgeven in maanden, dan moet de factor 12 er in verwerkt worden. ;)

[edit]O, ik was te laat! :D[/edit]
 
Dan moet je volgens mij gewoon deze code voor alleen het eindresultaat:

Code:
Public Class Form1
    Private Sub cmdBereken_Click(sender As Object, e As EventArgs) Handles cmdBereken.Click
        Dim StartKapitaal As Decimal = CDec(txtstartkapitaal.Text.Replace(".", ","))
        Dim Rente As Double = CDbl(txtintrest.Text.Replace("%", ""))
        Dim Duurtijd As Integer = CInt(txtduurtijd.Text)

        txtres.Text = Nothing

         MessageBox.Show(StartKapitaal + (Duurtijd * Rente/100 * Startkapitaal))
    End Sub
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan