Taschenrechner Programmieren - Komma Rechnen Problem

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Taschenrechner Programmieren - Komma Rechnen Problem

    Hallo. Ich habe eine problem. Und zwar als ich ein Taschenrechner in Visual Basic Programmiert habe und ausgetestet, ist mir einiges aufgefallen das er nicht mit Komma rechnen kann.

    Wenn ich z. B. 0.5 + 0.5 rechne, dann steht als Ergebniss 5.5 (statt 1.0 oder 1). Oder wenn ich 0.1 + 0.1 rechne, dann kommt 1.1 raus. (was aber auch Falsch ist). Also irgendwie rechnet er mit komma so komisch.

    Ich habe das so z. B. Programmiert:

    VB.NET-Quellcode

    1. Label1.Text = Val(TextBox1.Text) + (TextBox2.Text)


    So meine frage, wie mache ich das damit der Taschenrechner mit Komma richtig rechnen kann.

    Ich werde mich für Hilfreiche Antwort sehr freuen.
    =================================================================================================
    Achtung!
    Falls merken das ich paar mit Rechtschreib- oder Grammitkfehler
    schreibe. Wunder euch nicht, mein Deutsch ist nicht 100% gut. Denn meine
    Deutschsprache befindet sich noch in Beta Version.
    =================================================================================================
    Ist Val nicht VB6?
    Nutze doch einfach double.Parse ().ToString().

    Müsste klappen.

    EDIT: Muss ,(Komma) nicht .(Punkt) sein!

    C#-Quellcode

    1. label1.Text = (double.Parse(TextBox1.Text.Replace('.', ',')) + double.Parse(TextBox2.Text.Replace('.', ','))) + "";
    Bilder
    • Screenshot (317).png

      90,74 kB, 1.920×1.080, 1.097 mal angesehen
    Und Gott alleine weiß alles am allerbesten und besser.
    Der Ansatz ist schon verkehrt. Für einfache Rechnungen mag das vielleicht gehen, aber irgendwann wird das viel zu unflexibel und viele Ausdrücke am Stück kann man so nicht auswerten. Außerdem ist Dein Code Option Strict Off. Was Du brauchst, ist ein gescheiter Parser.
    So einen habe ich in SharpMath implementiert: github.com/ProgTrade/SharpMath…ter/SharpMath/Expressions

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    φConst und Trade, ich Programmiere nur mit Visual Basic und nicht mit Visual C# (bzw. ich kann mit Visual C# Programmieren noch gar nicht). Sorry das ich das noch nicht gesagt habe auf welchen Programmier Sprache ich Programmiere (habs vergessen), vielleicht wisst ihr wie man das unter Visual Basic Programmier Sprache Programmiert.

    =================================================================================================
    Achtung!
    Falls merken das ich paar mit Rechtschreib- oder Grammitkfehler
    schreibe. Wunder euch nicht, mein Deutsch ist nicht 100% gut. Denn meine
    Deutschsprache befindet sich noch in Beta Version.
    =================================================================================================
    Schön, dass Du mich ignoriert hast. O.o
    Auf jeden Fall lässt sich C# in VB.NET prima konvertieren, da es viele Konverter im Netz gibt. converter.telerik.com/ ist einer davon.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Funktioniert Trozdem nicht.
    Ich habe diese Code in Visual Basic Convertiert, Code in Visual Basic Programm eingefügt, das Programm gestartet, und wollte wieder versuchen ob Taschenrechner des rechnen kann, doch diesmal Abgestürzt. Also ich glaube du musst mir das als Visual Basic Sprache bei bringen, Convertieren bringt mir nichts, das hat gar nicht funktioniert.
    =================================================================================================
    Achtung!
    Falls merken das ich paar mit Rechtschreib- oder Grammitkfehler
    schreibe. Wunder euch nicht, mein Deutsch ist nicht 100% gut. Denn meine
    Deutschsprache befindet sich noch in Beta Version.
    =================================================================================================

    PrinzPersia schrieb:

    ich glaube du musst mir das als Visual Basic Sprache bei bringen
    Nö. Du hast alle Ansätze in dem Code, denn die Methoden sind ja die gleichen und dann kannste mit MSDN arbeiten. Und "funktioniert nicht" ist keine Fehlerbeschreibung.
    Das Einzige, was Du beachten musst, ist, dass Du dann halt noch in einen String konvertieren musst, weil das in VB.NET nicht derselbe Operator ist. (In C# ist mit + nämlich auch die Verkettung geregelt, in VB.NET ist das &)
    Selbst wenn Du es dann nicht hinbekommst, dann frag' halt und zeige uns das Problem.

    Was aber spricht dagegen, das mit einem richtigen Parser zu bewerkstelligen? Da bist Du noch kein einziges Mal drauf eingegangen.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Gute nachrichten, ich habe das jetzt hin bekommen. Jetzt kann der Taschenrechner auch mit Komma rechnen.

    Also danke für eure Hilfe :)
    =================================================================================================
    Achtung!
    Falls merken das ich paar mit Rechtschreib- oder Grammitkfehler
    schreibe. Wunder euch nicht, mein Deutsch ist nicht 100% gut. Denn meine
    Deutschsprache befindet sich noch in Beta Version.
    =================================================================================================

    PrinzPersia schrieb:

    Wenn ich z. B. 0.5 + 0.5 rechne, dann steht als Ergebniss 5.5
    Führe diesen Vode aus und verstehe ihn:

    VB.NET-Quellcode

    1. Option Strict Off
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim txt1 = "1" & 1
    5. Dim txt2 = "1" + 1
    6. MessageBox.Show(txt1 & Environment.NewLine & txt2)
    7. End Sub
    8. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Das mit Option Strict Off habe ich oben auch schon erklärt. Allerdings ging @PrinzPersia da gar nicht drauf ein, was ziemlich schade ist. Offenbar war nur eine möglichst schnelle Lösung gesucht und die Ursache gar nicht interessant, sodass Alternativen auch direkt ausgeschlossen wurden.
    Schließlich ist das eigentlich nicht der Weg, wie man das bewerkstelligt, aber er ist halt simpel... Trotzdem ist sauber was anderes und ich schätze, dass das Projekt immer noch Option Strict Off ist.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: