Hallo ich erstelle derzeit einen Taschenrechner in Windows Forms.
Ich bin eigentlich fertig mit dem Taschenrechner, bin aber leider jetzt am Schluss auf ein Problem gestoĂen, was ich nicht gelöst bekomme:
Wenn ich als Aufgabe 12,4 + 3 eingebe, kommt 127 raus. Ich verstehe aber einfach nicht warum. Es hat die ganze Zeit funktioniert und plötzlich nicht mehr. Vielleicht habe ich ja unbewusst etwas geÀndert.
Hier der Codeabschnitt, der etwas mit dem Komma zu tun hat (ich kann leider nicht den gesamten Code einfĂŒgen, da 500 Zeilen -> erweiterter Taschenrechner):
Imports System.Globalization
Imports System.Text.RegularExpressions
Public Class Form1
Public Property zahl As String = ""
Public Property calc As String = ""
Dim input As String = ""
Private Function GetDezimalTrennzeichen() As String
Return CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
End Function
Private Sub bcomma_Click(sender As Object, e As EventArgs) Handles bcomma.Click
tb.Text += GetDezimalTrennzeichen()
End Sub
Private Sub bsolve_Click(sender As Object, e As EventArgs) Handles bsolve.Click
' ...
Dim input As String = tb.Text
input = input.Replace(",", ".")
' ...
End Sub
Private Function EvaluateExpression(expression As String) As Double
' ...
Dim sqrtRegex As New Regex("sqrt\(([^()]+)\)")
While sqrtRegex.IsMatch(expression)
input = sqrtRegex.Replace(input, Function(match)
Dim innerExpression As String = match.Groups(1).Value
Dim result As Double = EvaluateExpression(innerExpression)
If result >= 0 Then
Return Math.Sqrt(result)
Else
' Wenn das Ergebnis negativ ist, wird eine Exception ausgelöst
Throw New ArithmeticException("Negatives Ergebnis")
End If
End Function)
End While
' ...
End Function
Danke schon einmal.