Syntax / Rechenproblem im Skript

  • Hi zusammen,

    dieses Skript macht mich noch irre :D

    Nachdem man rechts alles Mögliche an z.B. Ausgaben ausgerechnet hat wirds links rübergegeben und ausgerechnet.
    Nun gehts los: Als Beispielsumme habe ich 53,66 € genommen.

    Rechne ich in Excel die Umsatzsteuer aus, also

    Code
    SUMME=(53,66 - (53,66 /1,19))

    stimmt der Betrag -> 8,57 € ( 8,567563025 )

    Bei meiner Formel in AutoIT

    [autoit]

    GUICtrlSetData($UST_IN, ($AUS1 - ($AUS1 / 1.19)))

    [/autoit]

    kommt aber 8,46 ( 8,46218487394957 ) heraus.

    Das sind 12 Cent Unterschied und ich habe Mal wieder keinen blassen Schimmer woher das kommen könnte :S
    Ich würde mich freuen wenn ihr kurz über mein Skript schauen könntet, um zu sehen ob ihr da einen Fehler findet...

    Das komplette Skript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Math.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>

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

    HotKeySet("{ENTER}", "_ENTER")

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

    #region ### START Koda GUI section ### Form=c:\program files (x86)\autoit3\koda\forms\gewinnermittlung.kxf
    $Form1_1 = GUICreate("Gewinnermittler", 825, 199, 201, 129)
    $Ermittler = GUICtrlCreateGroup("", 8, 0, 521, 193)
    $Button5 = GUICtrlCreateButton("Errechnen", 392, 152, 123, 25, 0)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Rechner = GUICtrlCreateGroup("", 544, 0, 273, 193)
    $DISPLAY = GUICtrlCreateInput("", 560, 16, 241, 30, $ES_RIGHT)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $B_7 = GUICtrlCreateButton("7", 560, 64, 27, 25, 0)
    $B_8 = GUICtrlCreateButton("8", 594, 64, 27, 25, 0)
    $B_9 = GUICtrlCreateButton("9", 628, 64, 27, 25, 0)
    $B_4 = GUICtrlCreateButton("4", 560, 94, 27, 25, 0)
    $B_5 = GUICtrlCreateButton("5", 594, 94, 27, 25, 0)
    $B_6 = GUICtrlCreateButton("6", 628, 94, 27, 25, 0)
    $B_1 = GUICtrlCreateButton("1", 560, 124, 27, 25, 0)
    $B_2 = GUICtrlCreateButton("2", 594, 124, 27, 25, 0)
    $B_3 = GUICtrlCreateButton("3", 628, 124, 27, 25, 0)
    $B_C = GUICtrlCreateButton("C", 662, 64, 27, 25, 0)
    $B_PLUS = GUICtrlCreateButton("+", 662, 94, 27, 25, 0)
    $B_MINUS = GUICtrlCreateButton("-", 662, 124, 27, 25, 0)
    $B_NULL = GUICtrlCreateButton("0", 560, 154, 61, 25, 0)
    $B_KOMMA = GUICtrlCreateButton(",", 628, 154, 27, 25, 0)
    $B_GLEICH = GUICtrlCreateButton("=", 662, 154, 27, 25, 0)
    $Label1 = GUICtrlCreateLabel("Betriebseinnahmen:", 24, 24, 97, 17)
    $Label2 = GUICtrlCreateLabel("Privateinlagen:", 24, 56, 74, 17)
    $Label3 = GUICtrlCreateLabel("Vereinnahmte UsSt.:", 24, 88, 101, 17)
    $Label4 = GUICtrlCreateLabel("Gesamteinnahmen:", 24, 120, 95, 17)
    $Label5 = GUICtrlCreateLabel("Gewinn:", 24, 158, 43, 17)
    $Label6 = GUICtrlCreateLabel("Betriebsausgaben:", 278, 24, 92, 17)
    $Label7 = GUICtrlCreateLabel("Privatentnahmen:", 278, 56, 87, 17)
    $Label8 = GUICtrlCreateLabel("Abzuführende UsSt.:", 278, 88, 102, 17)
    $Label9 = GUICtrlCreateLabel("Gesamtausgaben:", 278, 120, 90, 17)
    $EINN_IN = GUICtrlCreateInput("", 136, 22, 123, 21, $ES_RIGHT)
    $EINLAGEN = GUICtrlCreateInput("", 136, 54, 123, 21, $ES_RIGHT)
    $UST_IN = GUICtrlCreateInput("", 136, 86, 123, 21, $ES_RIGHT)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $EINN_GES = GUICtrlCreateInput("", 136, 118, 123, 21, $ES_RIGHT)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $AUSG_IN = GUICtrlCreateInput("", 392, 22, 123, 21, $ES_RIGHT)
    $ENTNAHMEN = GUICtrlCreateInput("", 392, 54, 123, 21, $ES_RIGHT)
    $UST_OUT = GUICtrlCreateInput("", 392, 86, 123, 21, $ES_RIGHT)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $AUSG_GES = GUICtrlCreateInput("", 392, 118, 123, 21, $ES_RIGHT)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $GEWINN = GUICtrlCreateInput("", 136, 156, 123, 21, $ES_RIGHT)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $Button1 = GUICtrlCreateButton("Einahmen senden", 696, 64, 107, 25, 0)
    $Button2 = GUICtrlCreateButton("Ausgaben senden", 696, 94, 107, 25, 0)
    $Button3 = GUICtrlCreateButton("Einlagen senden", 696, 124, 107, 25, 0)
    $Button4 = GUICtrlCreateButton("Entnahmen senden", 696, 154, 107, 25, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    Dim $rechnung

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

    While 1
    $Msg = GUIGetMsg()
    If $Msg = $GUI_EVENT_CLOSE Then Exit
    Select
    Case $Msg = $B_1
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 1
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_2
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 2
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_3
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 3
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_4
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 4
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_5
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 5
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_6
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 6
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_7
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 7
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_8
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 8
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_9
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & 9
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_NULL
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & "0"
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_PLUS
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & "+"
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_MINUS
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & "-"
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_KOMMA
    $edit = GUICtrlRead($DISPLAY)
    $string = $edit & ","
    GUICtrlSetData($DISPLAY, $string)
    Case $Msg = $B_C
    GUICtrlSetData($DISPLAY, "")
    Case $Msg = $B_GLEICH
    $edit = GUICtrlRead($DISPLAY)
    $ergebnis = Execute($edit)
    $bereinigt = $ergebnis
    GUICtrlSetData($DISPLAY, $bereinigt)

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

    Case $Msg = $Button1
    $B1 = GUICtrlRead($DISPLAY)
    GUICtrlSetData($EINN_IN, $B1)
    Case $Msg = $Button2
    $B2 = GUICtrlRead($DISPLAY)
    GUICtrlSetData($AUSG_IN, $B2)
    Case $Msg = $Button3
    $B3 = GUICtrlRead($DISPLAY)
    GUICtrlSetData($EINLAGEN, $B3)
    Case $Msg = $Button4
    $B4 = GUICtrlRead($DISPLAY)
    GUICtrlSetData($ENTNAHMEN, $B4)
    Case $Msg = $Button5
    $EIN1 = GUICtrlRead($EINN_IN)
    $EINL = GUICtrlRead($EINLAGEN)
    $AUS1 = GUICtrlRead($AUSG_IN)
    $ENT1 = GUICtrlRead($ENTNAHMEN)
    GUICtrlSetData($UST_IN, ($AUS1 - ($AUS1 / 1.19)))
    ;$UST2 = GUICtrlRead($UST_IN)
    ;GUICtrlSetData($EINN_GES, ($EIN1 + $UST2 + $EINL))
    ;$UST3 = GUICtrlRead($EINN_GES)
    ;GUICtrlSetData($UST_OUT, $UST3)
    ;$UST4 = GUICtrlRead($UST_OUT)
    ;GUICtrlSetData($AUSG_GES, ($AUS1 + $ENT1 + $UST4))
    ;$AUSGABEN = GUICtrlRead($AUSG_GES)
    ;$EINNAHMEN= GUICtrlRead($EINN_GES)
    ;GUICtrlSetData($GEWINN, ($EINNAHMEN - $AUSGABEN))
    EndSelect

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

    WEnd

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

    Func _ENTER()
    $edit = StringReplace(GUICtrlRead($DISPLAY), ",", ".")
    $ergebnis = Execute($edit)
    $bereinigt = StringReplace($ergebnis, ".", ",")
    GUICtrlSetData($DISPLAY, $bereinigt)
    EndFunc ;==>_ENTER

    [/autoit]


    Vielen Dank im Vorraus für eure Mühe !

    Grüße

    Mike

    Einmal editiert, zuletzt von Mike280399 (12. Oktober 2011 um 08:39)

  • Boh, da gewöhne ich mich nie dran....

    [autoit]

    $AUS1 = StringReplace(GUICtrlRead($AUSG_IN), ",", ".")
    $ENT1 = GUICtrlRead($ENTNAHMEN)
    GUICtrlSetData($UST_IN, ($AUS1 - ($AUS1 / 1.19)))

    [/autoit]


    So funzt es nu.... Olle Komma / Punkt - Kacke :D

    Danke Dir wieder ein Mal :thumbup:

    #EDIT: Gibt es nicht eine Möglichkeit dieses ganze StringReplace dingens vor und nach dem Rechnen global anzugeben ?
    In einem Rechner sollte es ja so sein wenn man "," eingibt, dass das Skript mit "." arbeitet, aber "," zeigt....
    So was wie Global -> Wenn eingabe von "," in ein Inputfeld dann StringReplace "," , "." sonst wie immer ??
    Muss es doch geben :D

    2 Mal editiert, zuletzt von Mike280399 (11. Oktober 2011 um 11:11)

  • Hey danke, naja läuft ja jetzt :D

    Will mir aber nicht in die Birne das es nicht möglich sein soll, global alle Kommata in Inputboxen durch Punkte zu ersetzen :S