Hilfe mit (zu) großen Zahlen

  • hey!

    hab folgende for-schleife geschrieben, aba ab $result[62] wird nur noch -1 ausgegeben..
    $result[62] ist eine 19-stellige zahl, gibt es eine möglichkeit die anderen zahlen richtig auszugeben?

    [autoit]


    Dim $result[1] = [0]
    For $i = 1 to 100
    _ArrayAdd($result, $result[$i-1]*2+1)
    Next
    _ArrayDisplay($result)

    [/autoit]

    greetz syne:)

  • Also wenn die Formel zur Berechnung egal ist, dann kannst Du es wie folgt lösen:

    Spoiler anzeigen
    [autoit]


    #include<Array.au3>
    Dim $result[1] = [0]
    For $i = 1 to 100
    ; _ArrayAdd($result, $result[$i-1]*2+1) !!!! gestrichen
    _ArrayAdd($result, $result[$i-1]*1.25+1) ; gesetzt
    ; _ArrayAdd($result, $result[$i-1]*1.5+1) ; auch mal ausprobieren und letzten Zahlen beachten
    Next
    _ArrayDisplay($result)

    [/autoit]

    Ansonsten ist bei der 19-stelligen Anzeige als Anzeigelänge beendet.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi,


    evtl. exponential Schreibweise, wird ab der 5.ten Stelle gerundet:

    [autoit]

    #include <array.au3>
    Dim $result[1] = [0]
    For $i = 1 to 100
    If $i < 50 Then
    _ArrayAdd($result, $result[$i-1]*2+1)
    Else
    _ArrayAdd($result, StringFormat ("%e", $result[$i-1]*2+1))
    EndIf
    Next
    _ArrayDisplay($result)

    [/autoit]


    ;-))

    Stefan

  • Bessere Rundung:

    [autoit]

    $str = "double var1[100]"
    $a = DllStructCreate($str)
    if @error Then
    MsgBox(0,"","Error in DllStructCreate " & @error);
    exit
    endif
    DllStructSetData($a,"var1",1,0)
    For $i = 1 to 100
    DllStructSetData($a,1, DllStructGetData ($a, "var1", $i - 1) * 2 + 1, $i)
    Next
    For $i = 90 to 100 ; nur Elemente 90 - 100 anzeigen
    MsgBox (0,"",DllStructGetData ($a, "var1", $i)) ; bessere Exponetialrundung
    Next
    $a=0

    [/autoit]