Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Pelagio
Beiträge: 424
Registriert: 11.11.2004 17:52
Computerausstattung: AMD Ryzen 5 7600 6-Core Prozessor 3.80 GHz
16,0 GB Arbeitsspeicher
Windows 11 Pro Betriebssystem
Wohnort: Bremen

Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag 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
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win11Pro; PB6.20 LTS]. :allright:
Benutzeravatar
Waldixxl
Beiträge: 108
Registriert: 27.12.2005 17:35
Wohnort: Linz, Österreich

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag von Waldixxl »

Nur zum Nachvollziehen, was steht in

Code: Alles auswählen

GetGadgetText(GadgetID)
mfg.
Walter
Lesen bei schlechten Lichtverhältnissen ist nicht schlecht für die Augen, sondern trainiert sie sogar.

Linux Ubuntu Mate 18.04
PB 5.71
Intel i5
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag 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.
!UD2
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag von Kiffi »

bitte mit der Beta 4 testen. Die Beta 3 ist Schnee von gestern. ;-)

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Seltsame Berechnungsergebnisse bei PB4.4 Beta3

Beitrag von Kaeru Gaman »

yo, wie Stargate sagte
Pelagio hat geschrieben:

Code: Alles auswählen

     Debug Str(Kosten) 
da ist der Bug, selbst eingebaut.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten