Mit Kommar rechnen!

  • Hallo leibe leute!

    Habe versucht mit Kommar zu rechnen aber autoit rechnet mit ganzen zahlen soweit ich das ausprobieren konnte!
    Ich denke das es eine möglichkeit gibt aber gefunden habe ich sie nicht!


    beispiel: und letzter versuch bevor ich hir die frage gestellt habe

    [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit][autoit][/autoit][autoit]

    Local $miusB, $plusB,$base = '',$iDays
    $Gui = GUICreate('', 200, 100, -1, -1)
    GUISetOnEvent(-3, '_Exit')

    [/autoit][autoit][/autoit][autoit]

    $test = GUICtrlCreateInput('', 20, 50, 45, 21)
    GUICtrlCreateButton('',70,50,20,21)
    GUICtrlSetOnEvent(-1, '_test')

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    GUISetState()
    Func _Exit()
    Exit
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    While 1
    Sleep(10)
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Func _test()
    Local $x , $rechnung

    [/autoit][autoit][/autoit][autoit]

    $rechnung = GUICtrlRead($test)
    $y = StringIsFloat($rechnung)
    $x = Number($y/5)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,'',$x)
    EndFunc

    [/autoit]


    LG Kleienr

    Einmal editiert, zuletzt von kleiner27 (28. September 2009 um 15:03)

  • Autoit kann ohne weiteres mit Kommazahlen rechnen. Du hast aber in deinen Code einen falschen Befehl platziert. StringIsFloat ist nur eine Abfrage ob das Eingegebene überhaupt eine Gleitkommazahl ist. Dadurch bekommst du einen falschen Wert (nämlich 1) auf die Variable $y. Lass diese Überprüfung weg und schon hast du ein richtiges Ergebnis ;)

    [autoit]

    $rechnung = GUICtrlRead($test)
    $y = $rechnung
    $x = Number($y / 5)

    [/autoit]

    Außerdem wandelt Autoit intern die Datentypen passend um, also brauchst du auch kein Number.

  • das mit der msgbox ist nur ein test das ergebnis soll in einer input später stehen!

    so geht es ja, aber rechnen tut er nur ohne Komma

    [autoit]

    Func _test()
    Local $x , $rechnung

    [/autoit][autoit][/autoit][autoit]

    $rechnung = GUICtrlRead($test)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $x = Number($rechnung/5)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", $x)
    EndFunc

    [/autoit]
  • Sorry habe mich falsch ausgedrück in meiner fuktion rechnet er nicht mit Kommar!

    Ich habe in der hilfe zu ( StringReplace ) gelesen : das Ersetzt ein oder mehrere Zeichen in einem String. das versteh ich nicht mit dem umwandeln was Osca meint!
    Könnte ihr das mal genauer erklären?????


    LG Kleiner

  • Durch eingabe in der input sorry muß mich im ganzen besser ausdrücken!

    das heißt Komma geht nicht nur punkte und das bringt mich zu Oscars ausage das ich das komma ruch punkte ersetzen muß????


    LG Kleiner

    • Offizieller Beitrag

    Und als AutoIt-Beispiel:

    [autoit]


    $rechnung = "13,7" ; nehmen wir an, das ("13,7") hast Du eingegeben
    $rechnung = StringReplace($rechnung, ',', '.') ; umwandeln des Dezimalkommas in ein Dezimalpunkt
    $x = $rechnung/5 ; berechnen
    $x = StringReplace($x, '.', ',') ; den Punkt wieder in ein Dezimalkomma wandeln
    MsgBox(0, "", $x)

    [/autoit]