# Bug ?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Dirk Knoop

Betreff: # Bug ?

BeitragDi, Okt 02, 2007 9:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

bitte probiert doch mal in Blitz-3D folgenden Code aus:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
zahl1#=1.3  :  zahl2#=.3
ergebnis#=zahl1#-zahl2#  ; 1.3 - 0.3 = 1.0

;müsste ausgeführt werden!
If ergebnis#=1.0
       Color 255,255,0
       Cls
       Text 10,30,"RICHTIG: "+ergebnis#
       Flip
       delay 4000
EndIf

;wird aber ausgeführt!
If ergebnis#<1.0
       Color 255,255,0
       Cls
       Text 10,30,"FALSCH: "+ergebnis#
       Flip
       delay 4000
EndIf
End


Bei mir wird immer "If ergebnis#<1.0 " ausgeführt!

Wie es es bei Euch ?

Gruß,

Dirk
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

skey-z

BeitragDi, Okt 02, 2007 10:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ich glaube den Code braucht man nicht ausführen, anhand deiner Rechnung sollte es zwar Richtig sein und auch Logisch ist das Ergebnis richtig.

Allerdings rechnet Blitz intern mit mehr Nachkommastellen wodurch kleine Rundungsfehler das Ergebnis verfälschen.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Okt 02, 2007 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, das liegt an der Ungenauigkeit beim umrechnen von dezimal nach binär!
Bei Floats sind schnell Ungenauigkeiten vorhanden, bei Integer aber nicht!
In diesem Fall wahrscheinlich

1.3 nach binär dann etwa 1.299999 und nach dem - 0.3 .....
[BB2D | BB3D | BB+]
 

Dirk Knoop

BeitragDi, Okt 02, 2007 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Was kann man da jetzt machen, daß der Code richtig läuft ?

Gruß,

Dirk
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager
 

Dirk Knoop

BeitragDi, Okt 02, 2007 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles klar, ich habe es jetzt:

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()
zahl1#=1.3  :  zahl2#=.3
ergebnis#=zahl1#-zahl2#  ; 1.3 - 0.3 = 1.0

a$=ergebnis#
ergebnis#=a$

;müsste ausgeführt werden!
If ergebnis#=1.0
       Color 255,255,0
       Cls
       Text 10,30,"RICHTIG: "+ergebnis#
       Flip
       delay 4000
EndIf

;wird aber ausgeführt!
If ergebnis#<1.0
       Color 255,255,0
       Cls
       Text 10,30,"FALSCH: "+ergebnis#
       Flip
       delay 4000
EndIf
End
www.kostenloser-fussballmanager.de
www.discaim.de - weil Spaß kein Zufall ist
www.torchance.de - ein etwas anderer Fußball-Manager

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Okt 02, 2007 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Idee ist gut, das funktioniert sogar mit
"9.999e-008"
obwohl ich selbst nicht damit gerechnet habe!
[BB2D | BB3D | BB+]
 

Dreamora

BeitragDi, Okt 02, 2007 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest dich auch einfach an die Grundlageverhaltensweisen von Float anpassen.

NIEMALS =
Immer überprüfen ob etwas in einem Bereich liegt.
Dann kannst du dir das nämlich sparen mit dem vor- und rückwärts casten ... Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group