Hi,
Ich habe in VB einen kleinen Taschenrechner Programmiert.
Es Gibt blos das Problemm das das Programm abstürzt wenn man zu große Zahlen eingibt oder berechnen tut.
Hi,
Ich habe in VB einen kleinen Taschenrechner Programmiert.
Es Gibt blos das Problemm das das Programm abstürzt wenn man
zu große Zahlen eingibt oder berechnen tut.
gibt es dazu auch die rechnung, oder sollen wir erahnen was du wie tust, immerhin gibt es meist nicht nur eine lösung.
Tja also zum einen könntest du andere datentypen verwendedn wie zB Long, oder auch Double oder Decimal (bei einem taschenrechner werden doch meistens sowieso auch zahlen mit nachkommastellen gebraucht). Bei den beiden letzten musst du allerdings ab bestimmten größen mit rundungsfehlern rechnen, und auch hier gibts nach oben hin eine schranke (bei Double etwa 10^305).
Fur beliebig große zahlen bleibt dir wohl nichts anderes übrig als einen eigenen datentyp zu schreiben der genau das bereitstellt, das sollte aber etwas schwierig werden!
Kannst ja mal googeln ob es nicht schon jemand gemacht hat und den code zur verfügung stellt oder eine DLL daraus gemacht hat, die du verwenden kannst
Tja auch decimal hat seine grenzen!
Beliebig große werte werden von .Net so direkt nicht zur verfügung gestellt.
Aber um dir speziell dabei zu helfen den Programmabsturz zu verhindern bräuchte ich tatsächlich mal zumindedst einen codeschnipsel der dein vorgehen verdeutlicht!
Wie groß sollen denn die zahlen sein, die du eingeben kannst?
es ist ein windowsprogramm (das fenster kann ich die nicht zeigen weil hier keine bilder darstellbar sind)
Hier ein Codeschnipsel:
(das eigentliche programm ist noch viel länger)
Public Class Form1
Private Property Zahl As Decimal
Private Property ergeb As Decimal
Private Property Zahlz As Decimal
Private Sub Button1\_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If IsNumeric(TextBox1.Text) Then
If IsNumeric(TextBox2.Text) Then
Zahl = CDec(TextBox1.Text)
Zahlz = CDec(TextBox2.Text)
ergeb = Zahl + Zahlz
Label1.Text = CStr(ergeb)
Else
Label1.Text = "Überprüfen sie die Eingabe!!!"
End If
Else
Label1.Text = "Überprüfen sie die Eingabe!!!"
End If
End Sub
Public Class Form1
Private Property Zahl As Decimal
Private Property ergeb As Decimal
Private Property Zahlz As Decimal
Private Sub Button1\_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles Button1.Click
If Decimal.TryParse(TextBox1.Text, Zahl) Then
If Decimal.TryParse(TextBox2.Text, Zahlz) Then
ergeb = Zahl + Zahlz
Label1.Text = CStr(ergeb)
Else
Label1.Text = "Überprüfen sie die Eingabe!!!"
End If
Else
Label1.Text = "Überprüfen sie die Eingabe!!!"
End If
End Sub
Ich habe IsNumeric durch Decimal.TryParse ersetzt und ein paar kleine änderungen vorgenommen! Auf diese weise SOLLTE es zumindest nicht mehr abstürzen! Wie ich berreits gesagt habe gibt es standartmäßig keine datentypen für beliebigngroße zahlen, deswegen musst du dich mit 9999999999… Von Decimal zufrieden geben oder dir selbst einen entsprechenden programmieren!
ich hab seit längerem kein VB mehr geschrieben also verzeih mir wenn der Compiler einen Fehler bringt! Ich denke aber das du es selber schaffst den weg zu bekommen ^^