Rechnung gib an einer stelle falsches regebnis aus????

  • Hallo leute!

    Ich bastel gerade an ein dienstplan mit hilfe von BugFix experimentiere ich mit array´s klapt auch ganz gut , so zu mein problem!
    Wenn ich in meinen code 21 tage rechnen lasse also 21 schichttage vergebe wird nicht das richtige ergebnis angezeigt!
    Also man gibt für 21 tag F = frühschicht = 7,8 stunden durch die berechnung ohne WE müßte am ende -7,8 stunden also ein tag fehlt aber bei mir kommt 999998 raus und wenn ich
    23 tage vergebe, sollte ein tag also 7,8 plus sein aber als ergebniss bekomme ich 000001??? ?(

    Ich habe die rechnung anders geschrieben neu geschrieben aber ich finde den fehler nicht vieleicht findet ihn einer von euch?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <Date.au3>
    #include <Misc.au3>
    #include <array.au3>

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

    Opt('GUIOnEventMode', 1)
    Global $pichinetgo = @ScriptDir & '\5-r.gif'
    Local $miusB, $plusB,$base = '',$plusminuszteit
    $Gui = GUICreate('', 1003, 600, -1, -1)
    GUISetBkColor(0xFFFACD, $Gui)
    GUISetOnEvent(-3, '_Exit')
    GUICtrlCreatePic($pichinetgo, 0, 0, 1000, 10)
    GUICtrlCreatePic($pichinetgo, 175, 79, 690, 5)
    GUICtrlCreatePic($pichinetgo, 175, 138, 682, 5)
    $Menu = GUICtrlCreateMenu(' M&enü ')
    GUICtrlCreateLabel('Monat :', 12, 20, 40, 20)
    GUICtrlSetFont(-1, 9, 400, 2)
    GUICtrlCreateLabel('Soll', 868, 65, 20, 20)
    GUICtrlSetTip(-1, 'Gesamter Monats Zeitraum ')
    GUICtrlCreateLabel('Ist', 920, 65, 20, 20)
    GUICtrlSetTip(-1, 'Wieviel im Monat geleistet')
    GUICtrlCreateLabel('Übertrag', 950, 65, 42, 20)
    GUICtrlSetTip(-1, 'Plus Minus Stunden Übertragen')
    GUICtrlCreateLabel('Jahr :', 17, 44, 40, 20)
    GUICtrlSetFont(-1, 9, 400, 2)
    $monataus = GUICtrlCreateLabel('Bitte wählen', 60, 20, 75);--------------Monats Wahl
    $monatzahl = GUICtrlCreateLabel('0', -100, 0, 0, 0);-----------------------------------------Versteckt zahl für monats wahl
    $miusB = GUICtrlCreateButton('-', 135, 20, 15, 15)
    GUICtrlSetOnEvent(-1, 'PlusMinus')
    $plusB = GUICtrlCreateButton('+', 150, 20, 15, 15)
    GUICtrlSetOnEvent(-1, 'PlusMinus')
    $jahr = GUICtrlCreateLabel(@YEAR, 60, 44, 40, 19);-----------------------Jahres Wahl
    $minus = GUICtrlCreateButton('-', 135, 44, 15, 15)
    GUICtrlSetOnEvent(-1, 'PlusMinus')
    $plus = GUICtrlCreateButton('+', 150, 44, 15, 15)
    GUICtrlSetOnEvent(-1, 'PlusMinus')
    $Schalt = GUICtrlCreateLabel('',860,35,100,25)
    GUICtrlSetColor(-1, 0x0000FF)
    GUICtrlCreateInput('', 9, 79, 120, 19);--------------------Name
    GUICtrlSetTip(-1, 'Name')
    GUICtrlCreateInput('', 9, 101, 120, 19);-----------------------------Stellenbeschreibung
    GUICtrlSetTip(-1, 'Stellenbezeichnung')
    GUICtrlCreateGroup('', 9, 117, 120, 24);--------------------------Urlaub
    GUICtrlCreateLabel('R=', 108, 125, 20, 12)
    GUICtrlSetTip(-1, 'Urlaub')
    $plusminuszteit = GUICtrlCreateInput('', 130, 79, 45, 21);------------------------------- + - Zeiten
    GUICtrlSetTip(-1, '+ / - Zeiten')
    $stundendiewoche = GUICtrlCreateInput('39', 130, 101, 45, 21);-------------------------------Stunden die woche
    GUICtrlSetTip(-1, 'Stunden / Wochen')
    $Urlaub = GUICtrlCreateInput('', 130, 123, 45, 18);------------------------------------Urlaub
    GUICtrlSetTip(-1, 'Urlaub')
    ;-------------------------------------------------------------------Kalender und Schichtsetzen --------------------------------------------------------------------
    Local $arTage[31][2]
    $x = 176 ; +22
    For $i = 0 To 30
    $arTage[$i][0] = GUICtrlCreateInput(StringRight('0' & $i+1, 2), $x, 20, 21, 20)
    $arTage[$i][1] = GUICtrlCreateInput('', $x, 41, 21, 20)
    $x += 22
    Next
    Local $aschTage[31][2]
    $x = 176 ; +22
    For $i = 0 To 30
    $aschTage[$i][0] = GUICtrlCreateInput('', $x, 90, 21, 20)
    $aschTage[$i][1] = GUICtrlCreateInput('', $x, 111, 21, 20)
    $x += 22
    Next

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

    $soll = GUICtrlCreateInput('', 858, 79, 45, 21);--------------------Arbeitzeit SOLL
    $ist = GUICtrlCreateInput('', 904, 79, 45, 21);-------------------Arbeitzeit IST
    $uebertrag = GUICtrlCreateInput('', 950, 79, 45, 21);-------------------Arbeitzeit ÜBERTRAGEN
    $resrtulaub = GUICtrlCreateInput('', 904, 120, 45, 21);------------------Rest URLAUB
    GUICtrlCreateGroup('', 858, 116, 45, 25)
    GUICtrlCreateLabel('R=', 880, 125, 20, 12)
    $soller = GUICtrlCreateInput('', 950, 120, 45, 21);------------------SOLL EREICHT

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

    GUISetState()

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit
    ;-------------------------------------------------------------------Kalender und Schichtsetzen --------------------------------------------------------------------
    Local $Color = 0x000000
    While 1
    Sleep(10)
    If StringLeft(GUICtrlRead($plusminuszteit), 1) = "-" Then
    If $Color <> 0xff0000 Then
    $Color = 0xff0000
    GUICtrlSetColor($plusminuszteit, $Color)
    EndIf
    ElseIf $Color <> 0x000000 Then
    $Color = 0x000000
    GUICtrlSetColor($plusminuszteit, $Color)
    EndIf
    _abrech()
    WEnd
    Func PlusMinus()
    Switch @GUI_CtrlId
    Case $miusB
    GUICtrlSetData($monatzahl, GUICtrlRead($monatzahl) - 1)
    Case $plusB
    GUICtrlSetData($monatzahl, GUICtrlRead($monatzahl) + 1)
    Case $minus
    GUICtrlSetData($jahr, GUICtrlRead($jahr) - 1)
    Case $plus
    GUICtrlSetData($jahr, GUICtrlRead($jahr) + 1)
    EndSwitch
    _Wochentag()
    _stimmo()
    EndFunc
    Func _Wochentag();-----------------------------------------------------------------------------------------------------------------aktualisieren Plus
    GUICtrlSetData($monataus, _getmonatwahl(GUICtrlRead($monatzahl)))
    For $i = 0 To 30
    GUICtrlSetData($arTage[$i][1], _getwochwntag(_DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0]))))
    Next
    _Schaltjahr()
    EndFunc ;==>_aktualplus
    Func _Schaltjahr();--------------------------------------------Schaltjahr
    If _DateIsLeapYear(GUICtrlRead($jahr)) Then
    GUICtrlSetData($Schalt, 'Schaltjahr')
    Else
    GUICtrlSetData($Schalt, '')
    EndIf
    EndFunc
    Func _getwochwntag($wtag);---------------------------------Wochentag wandler
    Local $aWT[8] = ['','So','Mo','Di','Mi','Do','Fr','Sa']
    Return $aWT[$wtag]
    EndFunc ;==>_getwochwntag
    Func _getmonatwahl($monatw);------------------------------Monats wandler
    If $monatw = 0 Then
    _GUICtrlButton_Enable($miusB, False)
    ElseIf $monatw = 1 Then
    _GUICtrlButton_Enable($miusB, True)
    ElseIf $monatw = 13 Then
    _GUICtrlButton_Enable($plusB, False)
    ElseIf $monatw = 12 Then
    _GUICtrlButton_Enable($plusB, True)
    EndIf
    Local $aMonat[14] = ['Bitte wählen','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember','Bitte wählen']
    Return $aMonat[$monatw]
    EndFunc ;==>_getmonatwahl

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

    func _stimmo()
    Local $anzSaSo = 0
    For $i = 0 To 30
    If _DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0])) = 1 Then
    $anzSaSo += 1
    ElseIf _DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0])) = 7 Then
    $anzSaSo += 1
    EndIf
    Next
    $rechnung = GUICtrlRead($stundendiewoche)
    $rechnung = StringReplace($rechnung, ',', '.')
    $y = $rechnung/5
    $xy = $anzSaSo * $y
    $iDays = _DateDaysInMonth(GUICtrlRead($jahr),GUICtrlRead($monatzahl))
    $yy = $iDays * $y - $xy
    $yy = StringReplace($yy, '.', ',')
    GUICtrlSetData($soll,$yy)
    EndFunc

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

    Func _abrech()
    Local $anzSicht = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F' Then
    $anzSicht += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'S' Then
    $anzSicht += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'Z' Then
    $anzSicht += 1
    EndIf
    Next

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

    Local $anzSicht1 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F2' Then
    $anzSicht1 += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'S2' Then
    $anzSicht1 += 1
    EndIf
    Next

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

    Local $anzSicht2 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'FF' Then
    $anzSicht2 += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'SS' Then
    $anzSicht2 += 1
    EndIf
    Next

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

    Local $anzSicht3 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'Na' Then
    $anzSicht3 += 1
    EndIf
    Next

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

    Local $anzSicht4 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][1]) = 'U' Then
    $anzSicht4 += 1
    EndIf
    Next

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

    $rechnung1 = GUICtrlRead($stundendiewoche)
    $rechnung1 = StringReplace($rechnung1, ',', '.')
    $xy1 = $rechnung1/5
    $x = $anzSicht * 7.8
    $xx = $anzSicht1 * 6.24
    $xxx = $anzSicht2 * 3.9
    $xxxx = $anzSicht3 * 8.8
    $xxxxx = $anzSicht4 * $xy1
    $xxxxxx = $x + $xx + $xxx + $xxxx + $xxxxx
    $xxxxxx = StringReplace($xxxxxx,'.', ',')
    GUICtrlSetData($ist,$xxxxxx)
    $sollaus = GUICtrlRead($soll)
    $sollaus = StringReplace($sollaus, ',', '.')
    $istaus = GUICtrlRead($ist)
    $istaus = StringReplace($istaus, ',', '.')
    $sollistrech = $istaus - $sollaus
    $sollistrech = StringReplace($sollistrech, '.', ',')
    GUICtrlSetData($soller,$sollistrech)
    $pmaus = GUICtrlRead($plusminuszteit)
    $pmaus = StringReplace($pmaus, ',', '.')
    $solleraus = GUICtrlRead($soller)
    $solleraus = StringReplace($solleraus, ',', '.')
    $uebertragrech = $solleraus + $pmaus
    $uebertragrech = StringReplace($uebertragrech, '.', ',')
    GUICtrlSetData($uebertrag,$uebertragrech)
    $c = GUICtrlRead($Urlaub)
    $c = StringReplace($c,',', '.')
    $url = $c - $anzSicht4
    $url = StringReplace($url,'.', ',')
    GUICtrlSetData($resrtulaub,$url)

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

    EndFunc

    [/autoit]

    LG Kleiner

    2 Mal editiert, zuletzt von kleiner27 (3. Oktober 2009 um 18:39)

  • Kannst du deine Rechnung bitte mal Mathematisch verfassen? Dann verstehen wir alle (naja die meisten hoffe ich zumindest :D) das :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Habe notizen im code gemacht fals noch was unklar dann werde ich das noch besser erklären!

    [autoit]

    Func _abrech()
    Local $anzSicht = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F' Then
    $anzSicht += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'S' Then
    $anzSicht += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'Z' Then
    $anzSicht += 1
    EndIf
    Next

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

    Local $anzSicht1 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F2' Then
    $anzSicht1 += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'S2' Then
    $anzSicht1 += 1
    EndIf
    Next
    ;################################################################ in den if anweisungen wird gezählt wie oft die schichten F - S - FF - SS usw. workommen und addiert
    Local $anzSicht2 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'FF' Then
    $anzSicht2 += 1
    ElseIf GUICtrlRead($aschTage[$i][0]) = 'SS' Then
    $anzSicht2 += 1
    EndIf
    Next

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

    Local $anzSicht3 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'Na' Then
    $anzSicht3 += 1
    EndIf
    Next

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

    Local $anzSicht4 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][1]) = 'U' Then
    $anzSicht4 += 1
    EndIf
    Next
    ; in der func _stimmo() werden die monats tage ohne wochenende mit die stundenwoche addiert
    $rechnung1 = GUICtrlRead($stundendiewoche)
    $rechnung1 = StringReplace($rechnung1, ',', '.')
    $xy1 = $rechnung1/5; <--------- teilt die stundenwoche input
    $x = $anzSicht * 7.8; <------------ F - S - Z * 7,8
    $xx = $anzSicht1 * 6.24; <------- F2 - S2 * 6,4
    $xxx = $anzSicht2 * 3.9; <------- FF - SS * 3,9
    $xxxx = $anzSicht3 * 8.8; <------ Na * 8,8
    $xxxxx = $anzSicht4 * $xy1; <----- Urlaub * stunden in der woche
    $xxxxxx = $x + $xx + $xxx + $xxxx + $xxxxx; <-------- werden alle addiert
    $xxxxxx = StringReplace($xxxxxx,'.', ',')
    GUICtrlSetData($ist,$xxxxxx)
    $sollaus = GUICtrlRead($soll)
    $sollaus = StringReplace($sollaus, ',', '.')
    $istaus = GUICtrlRead($ist)
    $istaus = StringReplace($istaus, ',', '.')
    $sollistrech = $istaus - $sollaus; <------- soll - ist
    $sollistrech = StringReplace($sollistrech, '.', ',')
    GUICtrlSetData($soller,$sollistrech)
    $pmaus = GUICtrlRead($plusminuszteit)
    $pmaus = StringReplace($pmaus, ',', '.')
    $solleraus = GUICtrlRead($soller)
    $solleraus = StringReplace($solleraus, ',', '.')
    $uebertragrech = $solleraus + $pmaus ; Plus Minus stunden + Sollereicht
    $uebertragrech = StringReplace($uebertragrech, '.', ',')
    GUICtrlSetData($uebertrag,$uebertragrech)
    $c = GUICtrlRead($Urlaub)
    $c = StringReplace($c,',', '.')
    $url = $c - $anzSicht4; <-------- berechnug des urlaubs
    $url = StringReplace($url,'.', ',')
    GUICtrlSetData($resrtulaub,$url)

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

    EndFunc

    [/autoit]
  • Stunden die Wochen in unserm fall 39 wird durch 5 geteilt um auf die Stunden am Tag zu kommen
    Das ist die Grundlage um die Stunden im Monat und Urlaub zu berechnen.
    In der Func _stimmo() werden die Tage des zugewiesenen Monat ermittelt gleichzeitig werden Samstag und Sontag ermittel von dem jeweiligen Monat abgezogen und mit der Teilung der stunden in der Woche in unserem Fall 7,8 multipliziert das Ergebnis ist das soll im Monat also die stunden die im Monat gearbeitet werden sollten.
    Ich habe F – S – Z = 7,8 Stunden, F2 – S2= 6,24 Stunden, FF – SS = 3,9 Stunden und Na = 8,8 Stunden zugewiesen.
    Es ist möglich den Mitarbeiter F = Frühschicht, S= Spätschicht, Z= Zwischenschicht, usw. zu geben darum die Berechnung in Func _abrech() da werden die jeweiligen Sichten also wie oft F ,S,F2 usw. vorkommen und addiert also wenn zweimal F gefunden Ergebnis 2 und das Ergebnis wird mit dem zugewiesenen wert multipliziert also 2 * 7,8 = 15,6 sollten andere schichten vergeben worden sein wie zb. FF das wird das gleiche gemacht gezählt wie oft und mit dem zugewiesenden werd multipliziert also sagen wir FF wurde zweimal gefunden also 2*3,9 = 7,8 als nächstes werden die Ergebnisse addiert und in als ( Ist ) ausgegeben Bedeutung das was zu dem Zeitung an stunden geleistet wurden die nächste Rechnung ist Sollerreicht das heißt das ich ( ist ) von ( Soll ) subtrahieren das angezeigt wird wie viele Stunden noch offen sind also noch geleistet werden sollten.
    Die nächste Rechnung ist das übertragen für den nächsten Monat das heißt das dort gerechnet wird ob man in den nächsten Monat mit plus oder minus stunden geht die Rechnung setzt sich wie folgt zusammen das die eingetragenen plus oder minus Stunden auf Sollerreich Addiert werden! Ich hoffe das, das für das Verständnis der Rechnung ausreicht!

    LG Kleiner
    _

  • Hallo leute!
    Ich habe die rechnungen ein wenig anders geschrieben und der fehler ist immer noch immere einen tag bevor man auf null kommt in meinen beispiel würde ein tag 7,8 stunden sein die rechnung die jetzt habe rechnet an den tag -7,80000000000001 und wenn ein tag plus dann 7,80000000000001 ich habe ihn und her überlegt vor und nach den beiden tagen wird richtig weiter gerechnet dnek ... denk ... dan kam ich auf die ide zu testen bei welchen sicheten das eigentlich ist und es ist bei jeder schicht so also 123 las ich in einer if abfrage schauen wenn ein wert 17 stellen hat dann las ich ihn bis auf 5 von links abschneiden und bei 16, 4 von links!

    Ich wohlt mal sagen das ich das richtig super finde 70 leute haben reingeschaut und schaut mal wieviel hilfe ich bekommen habe! :rofl:

    Bis zum nächsten mal

    LG Kleiner

  • Hallo kleiner27,

    an deiner Stelle würde ich die func _Wochentag so abändern:

    [autoit]

    Func _Wochentag();-----------------------------------------------------------------------------------------------------------------aktualisieren Plus
    $j = _DateDaysInMonth(GUICtrlRead($jahr),GUICtrlRead($monatzahl))
    ConsoleWrite($j & @CRLF)
    GUICtrlSetData($monataus, _getmonatwahl(GUICtrlRead($monatzahl)))
    For $i = 0 To 30
    if $i < $j then
    GUICtrlSetData($arTage[$i][1], _getwochwntag(_DateToDayOfWeek(GUICtrlRead($jahr), GUICtrlRead($monatzahl), GUICtrlRead($arTage[$i][0]))))
    GUICtrlSetState($aschTage[$i][0],$Gui_Enable)
    GUICtrlSetState($aschTage[$i][1],$Gui_Enable)
    Else
    GUICtrlSetData($arTage[$i][1], "")
    GUICtrlSetState($aschTage[$i][0],$Gui_Disable)
    GUICtrlSetState($aschTage[$i][1],$Gui_Disable)
    EndIf
    Next
    _Schaltjahr()
    EndFunc ;==>_Wochentag

    [/autoit]

    hat zwar nichts mit dem Rechenproblem zu tun, aber das hast du ja anders gelöst,

    mfg (Auto)Bert


  • Ich wohlt mal sagen das ich das richtig super finde 70 leute haben reingeschaut und schaut mal wieviel hilfe ich bekommen habe! :rofl:


    Hey,

    das "Rechnen_Problem" reduziert sich bei genauer Betrachtung doch auf Plus, Minus, Div., Mult. oder?
    Wo genau soll da die Hilfe ansetzen? :D

    Einmal editiert, zuletzt von nuts (3. Oktober 2009 um 15:19)

  • Es ist alles nur addieren subtrahieren multiplizieren und dividieren!
    Du wo genau die hilfe ansetzen soll kann ich dir nicht sagne!

    ich zeig dir den nuen code :

    [autoit]

    Func _abrech()
    $stwan = GUICtrlRead($stundendiewoche)
    $stwan = StringReplace($stwan, ',', '.')
    $soaus = GUICtrlRead($soll)
    $soaus = StringReplace($soaus, ',', '.')
    $x = $stwan / 5
    $anzSicht = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F' Then
    $anzSicht += 1
    EndIf
    Next

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

    $sch1 = $anzSicht * 7.80

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

    Local $anzSicht1 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'S' Then
    $anzSicht1 += 1
    EndIf
    Next

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

    $sch2 = $anzSicht1 * 7.80

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

    Local $anzSicht2 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'Z' Then
    $anzSicht2 += 1
    EndIf
    Next

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

    $sch3 = $anzSicht2 * 7.80

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

    Local $anzSicht3 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'F2' Then
    $anzSicht3 += 1
    EndIf
    Next

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

    $sch4 = $anzSicht3 * 6.24

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

    Local $anzSicht4 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'S2' Then
    $anzSicht4 += 1
    EndIf
    Next

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

    $sch5 = $anzSicht4 * 6.24

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

    Local $anzSicht5 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'FF' Then
    $anzSicht5 += 1
    EndIf
    Next

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

    $sch6 = $anzSicht5 * 3.90

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

    Local $anzSicht6 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'SS' Then
    $anzSicht6 += 1
    EndIf
    Next

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

    $sch7 = $anzSicht6 * 3.90

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

    Local $anzSicht7 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][0]) = 'Na' Then
    $anzSicht7 += 1
    EndIf
    Next

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

    $sch8 = $anzSicht7 * 8.80

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

    Local $anzSicht8 = 0
    For $i = 0 To 30
    If GUICtrlRead($aschTage[$i][1]) = 'U' Then
    $anzSicht8 += 1
    EndIf
    Next
    $sch9 = $anzSicht8 * $x

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

    $xx = $sch1 + $sch2 + $sch3 + $sch4 + $sch5 + $sch6 + $sch7 + $sch8 + $sch9;<-----suweit ich mir die rechnung ausgegeben habe rechnet er bis hir immer richtig
    $xxx = $xx - $soaus; <-- und hir sobald ich hir 21 tage abziehen lasse vom soll wert dann bekomm ich -7.80000000000001 und bei 23 tagen 7.80000000000001
    ; woher er aufeinmal 0000000000001 herbekommt keine ahnung das wurmt mich gut ich habe es anders gelöst doch es wurmt mich!

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

    If StringLen($xxx) = 17 Then
    GUICtrlSetData($soller, StringLeft($xxx, 5))
    ElseIf StringLen($xxx) = 16 Then
    GUICtrlSetData($soller, StringLeft($xxx, 4))
    Else
    GUICtrlSetData($soller, StringLeft($xxx, 6))
    EndIf
    $len = StringLen($xxx)

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

    GUICtrlSetData($ist, $xx)

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

    MsgBox(0,'',$len)
    MsgBox(0,'',$xxx)
    EndFunc

    [/autoit]


    Ich frage mich woher die 0000000000001 kommen vieleicht stimmt die rechnung nicht vieleicht ist es so oder vieleicht die zusamenrechnungen anders aber ich komm nicht drauf!

    LG Kleiner

    Nachtrag auch wenn man $xx und $soaus richtig stellt also ist vom soll abzieht kommt das gleiche !

    Einmal editiert, zuletzt von kleiner27 (3. Oktober 2009 um 15:30)

  • Ich weiß nicht warum ich da nicht vorher drauf gekommen bin, manchmal sieht man den wald vor lauter bäumen nicht!!! 8|

    Die lösung ......spanung .......trommel, Tada Runden wah die antwort! :thumbup:

    Bis zum nächsten mal

    Lg kleiner

  • Hallo kleiner27,

    setze mal diesen Skript-Code ein:

    [autoit]

    $xxx = round(($xx - $soaus),2); <-- und hir sobald ich hir 21 tage abziehen lasse vom soll wert dann bekomm ich -7.80000000000001 und bei 23 tagen 7.80000000000001
    ; woher er aufeinmal 0000000000001 herbekommt keine ahnung das wurmt mich gut ich habe es anders gelöst doch es wurmt mich!

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

    #cs
    If StringLen($xxx) = 17 Then
    GUICtrlSetData($soller, StringLeft($xxx, 5))
    ElseIf StringLen($xxx) = 16 Then
    GUICtrlSetData($soller, StringLeft($xxx, 4))
    Else
    GUICtrlSetData($soller, StringLeft($xxx, 6))
    EndIf
    #ce
    GUICtrlSetData($soller, $xxx))

    [/autoit]

    mfg (Auto)Bert

  • ich weiss nicht wie groß die zahlen sind aber evtl. sollte man biginteger zum rechnen nehmen? Gab da doch mal diesen Wettbewerb, diese Funktionen funktionieren doch super :)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Hallo fireflyer,

    ich weiss ja nicht wieviele Stunden dein Chef möchte dass du arbeitest, bin aber der Meinung normalerweise braucht man dafür keine BigInteger,

    mfg (Auto)Bert

  • Guten morgen!

    Aus reiner neugier was ist denn BigInteger, ich habe den begrif in die hilfe eigegeben keine treffer gelandet werde gleich mal ihr im forum in die suche eingeben!
    Zu meiner Stunden rechnung, ich habe das mal mit Excel abgeglichen ich habe das genau so nachempfunden und bis auf 20 stellen nach dem komma , was denkt ihr ist raus gekommen das gleiche irgendwo kommen 00000000000001 her ich habe den dienstplan schon mit excel erstelt doch standart zeigt er nur zwei stellen nach dem kommar also ist es mir garnicht aufgefallen! Vieleicht gibt es ja hir ein rechner profie der diese sache erklären kann. Am ende rechnen beide richtig und das ist doch die hauptsache.
    und was ich noch für alle die solch eine rechnung vorhaben denkt strukturiert wan man sich eine zahl ausgeben läst sie rechnet und wieder ausgibt wichtig ist wo man die rechnung platziert im code durch meine drei test tage sind mir die wildestet regebnise untergekommen so habe ich auch gleich gelernt wie man die rechnungen stellt!

    Und vielen dank an AutoBert!


    LG Kleiner

    _

  • aber wenn er so große floats hat sollte er es vielleicht doch verwenden? Ein Versuch wäre es denke ich Wert.

    Also Kleiner:
    1. Diese UDF downloaden und in dein Script includen: https://autoit.de/index.php?page…61328#post61328
    2. Deine Rechenoperationen abändern:
    Anstatt:

    [autoit]

    $erg = $zahl1 + $zahl2

    [/autoit]


    Verwende:

    [autoit]

    $erg = _BigNum_Add($zahl1, $zahl2)

    [/autoit]


    Die Zahlen können müssen hier aber Strings sein.

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D