Seite 1 von 1

Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 14:55
von Pelagio
Hallo,

mir ist durch Zufall ein Problem bei PB4.4 B3 ins Auge gefallen.
Bei der Berechnung zweier Double-Werte aus Stringgadgets ist es AB UND ZU vorgekommen, das dass Ergebnis nicht stimmte, sondern es wurden die Daten angezeigt die hinter DEBUG im Code stehen. Ich weiß jetzt nicht ob es ein generelles Berechnungs- oder speziell durch die Konvertierung (ValD(Stringgadget)) hervorgerufenes Problem ist. Vielleicht ist dies sogar ein Hinweis auf ein BUG.

Code: Alles auswählen

For n=a to x 
     Kosten.d = ValD(GetGadgetText(GadgetID)) * ValD(GetGadgetText(GadgetID))
     Debug Str(Kosten) ;= -9223372036854775808
     Debug Kosten       ;= _+Infinity
Next n

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 15:21
von Waldixxl
Nur zum Nachvollziehen, was steht in

Code: Alles auswählen

GetGadgetText(GadgetID)
mfg.
Walter

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 15:27
von Froggerprogger
Ohne ein lauffähiges Beispiel, dass den Fall rekonstruiert, kann man hier nix wirklich sinnvolles zu aussagen. Einzige Möglichkeit, die mir einfällt: Falls ins String-Gadget ein Zahlenwert (optional incl. Komma), gefolgt vom Buchstaben E und weiteren Zahlen geschrieben ist, und du diesen mit ValD konvertierst, könnte dies zu infinity führen, da der Teil nach E als Exponent angesehen wird. Beispiel:

Code: Alles auswählen

k.d = ValD("4597843.5E8949584PeterPan235se") ; wird als 4597843.5 * 10^8949584 geparst => inf
Debug k
Wenn Du eine Kombination von Strings angeben kannst, die bei dir zum Problem führen, lässt sich mehr dazu sagen.

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 15:57
von Kiffi
bitte mit der Beta 4 testen. Die Beta 3 ist Schnee von gestern. ;-)

Grüße ... Kiffi

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 16:17
von STARGÅTE
das sieht aus wie ein "normaler" overload.
Beispiel:

Code: Alles auswählen

Kosten.d = 1e200 * 1e200
Debug Kosten
+Infinity
Auch .d ist nicht unendlich, geht max bis +-10^320 oder so

die Zahl : -9223372036854775808
kommt immer bei Str() wenn die zahl zu groß ist, DENN Str() ist für ganzzahlige Zahlen !
denn -9223372036854775808 = $8000 0000 0000 0000 (also kleinste Quad)

Nimm die richtige Procedure und zu erhälst auch Infinity

Code: Alles auswählen

Kosten.d = 1e200 * 1e200
Debug Str(Kosten)
Debug Kosten
Debug StrD(Kosten)
-9223372036854775808
+Infinity
+Infinity

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Verfasst: 09.10.2009 18:56
von Kaeru Gaman
yo, wie Stargate sagte
Pelagio hat geschrieben:

Code: Alles auswählen

     Debug Str(Kosten) 
da ist der Bug, selbst eingebaut.