Probleem met komma getal??

Status
Niet open voor verdere reacties.

markenfabian

Gebruiker
Lid geworden
15 dec 2011
Berichten
6
Hallo iedereen

Ik heb een code gemaakt en alles werkt prima op een ding na.
Ik laat getallen optellen en daar komt dan bijv, 5,7 uit.
Nu wil ik deze in geld om laten tellen, bijv. 2 van €2 1 van €1 etc
Maar nu doet het komma getal het niet.
Kan iemand mij helpen???
 
Code:

Public Class Form1
Dim prijs_invoer, prijs_betalen As Decimal
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
prijs_betalen = prijs_betalen + 5.0
T7.Text = prijs_betalen
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
prijs_betalen = prijs_betalen + 3.0
T7.Text = prijs_betalen
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
prijs_betalen = prijs_betalen + 3.0
T7.Text = prijs_betalen
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
prijs_betalen = prijs_betalen + 2.0
T7.Text = prijs_betalen
End Sub
Private Sub S6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles S6.Click
prijs_invoer = prijs_invoer + 2.0
T6.Text = prijs_invoer
End Sub

Private Sub S7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles S7.Click
prijs_invoer = prijs_invoer + 1.0
T6.Text = prijs_invoer
End Sub

Private Sub S8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles S8.Click
prijs_invoer = prijs_invoer + 0.5
T6.Text = prijs_invoer
End Sub

Private Sub S9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles S9.Click
prijs_invoer = prijs_invoer + 0.2
T6.Text = prijs_invoer
End Sub

Private Sub S10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles S10.Click
prijs_invoer = prijs_invoer + 0.1
T6.Text = prijs_invoer
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim S1, S2, S3, S4, S5 As Decimal
Dim b As Decimal

T6.Text = prijs_invoer - prijs_betalen

b = Val(T6.Text)


If prijs_betalen > prijs_invoer Then
MsgBox("U moet meer geld ingooien")
End If

While b > 0 And b > 1.99
b = b - 2
S1 = S1 + 1
End While
T1.Text = Str(S1)


While b < 2 And b > 0 And b > 0.99
b = b - 1
S2 = S2 + 1
End While
T2.Text = Str(S2)


While b < 1 And b > 0 And b > 0.49
b = b - 0.5
S3 = S3 + 1
End While
T3.Text = Str(S3)


While b < 0.5 And b > 0 And b > 0.19
b = b - 0.2
S4 = S4 + 1
End While
T4.Text = Str(S4)


While b < 0.2 And b > 0 And b > 0.09
b = b - 0.1
S5 = S5 + 1
End While
T5.Text = Str(S5)
 
Dus je probeert getallen op te tellen?
Waar gaat het precies mis?

Decimalen optellen:
Code:
Dim i1 As Double = 1.5, i2 As Double = 2.1
Console.WriteLine((i1 + i2).ToString())
 
Ik moet een wasstraat maken. Daar zijn een aantal prijzen voor. Dit is prijs_betalen
Het gaat mis als ze geld invoeren dit heet prijs_betalen.
Daar heb je vanaf €2 t/m €0,10. Dus dan voeren ze bijv. €5,70 in.
Dit komt in T6 te staan. Als ze teveel geld in hebben gevoerd, krijgen ze wat terug
Dit is S1 t/m S5. Nu wil hij wel berekenen hoeveel hij terugkrijgt voor de komma, maar niet na de komma
bijv. je moet 7 euro betalen. Je gooit er 8,20 in. Dan krijg je 1,20 terug
Dan staat er bij de 1 euro een 1je en de rest een 0. Maar hij zou ook bij 0,20 euro een 1tje moeten staan.
Hoop dat je het zo begrijpt
 
Ik denk dat ik het begrijp.

Dit zou moeten werken:

[cpp]''//Teruggave berekenen
Private Function GeefTerug(ByVal betaald As Decimal, ByVal te_betalen As Decimal) As String
Dim output As String = "", verschil As Decimal = 0
''// Te veel betaald
If betaald > te_betalen Then
output = "Wisselgeld:" & vbNewLine & BedragNaarMunten(Math.Round(betaald - te_betalen, 2))
''//genoeg betaald:
ElseIf betaald = te_betalen Then : output = "Geen wisselgeld."
''//Te weinig betaald:
Else
output = "Te weinig betaald. Te betalen:" & vbNewLine & BedragNaarMunten(Math.Round(te_betalen - betaald, 2))
End If
Return output
End Function


''//Converteer bedrag naar aantal munten
Private Function BedragNaarMunten(ByVal input As Decimal) As String
Dim Munten As Decimal() = {2, 1, 0.5, 0.2, 0.1, 0.05}
Dim output As String = ""
For Each item As Decimal In Munten
Dim counter As Integer = 0
While input >= item
input -= item
counter += 1
End While
output &= counter.ToString & " munt(en) van " & item.ToString() & vbNewLine
Next
Return output
End Function[/cpp]

Zo gebruiken:

[cpp]Console.WriteLine(GeefTerug(10, 10.6))[/cpp]

Uitkomst:

z8Ytn.png
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan