Seite 1 von 1

Falsche Ausgabe mit Debug

Verfasst: 16.03.2007 22:37
von Helle
Folgender Code zeigt was ich meine:

Code: Alles auswählen

;Reihenfolge bestimmt die Genauigkeit, wenn Konstanten gemeinsam mit "normalen" Variablen verwendet werden
;gilt auch z.B. für Division

zehn.d = 10.0
dddd.d = 10.123456789
#zehn = 10.0

Debug #PI          ;nur für Ziffernfolge
Debug #PI*10       ;Ergebnis ist double Precision, richtig
Debug #PI*#zehn    ;Ergebnis ist double Precision, richtig 
Debug #zehn*#PI    ;Ergebnis ist double Precision, richtig
Debug zehn*#PI     ;Ergebnis ist double Precision, richtig
Debug #PI*zehn     ;SINGLE!!! FALSCH
Debug #zehn*dddd   ;SINGLE!!! FALSCH
Debug dddd*#zehn   ;Ergebnis ist double Precision, richtig
Bei "falscher" Reihenfolge der Berechnungsglieder schraubt Debug die Genauigkeit herunter, was natürlich falsch ist. Tritt auf, wenn die Konstante am Anfang steht.

Gruss
Helle

Verfasst: 17.03.2007 13:04
von Kaeru Gaman

Code: Alles auswählen

Debug #PI*#zehn    ;Ergebnis ist double Precision, richtig
Debug #zehn*#PI    ;Ergebnis ist double Precision, richtig
also das wundert mich nun wirklich... da ist doch keinerlei typ angegeben.
ist single-float doch nicht mehr der standard-float-typ....?

das ganze sieht mir nach einem casting-problem aus.

besonders interessant wird das, wenn man integers und floats zusammen benutzt.
da muss man ganz extrem auf reihenfolge und klammerung achten,
um im richtigen schritt der berechnung zu casten.