Bug beim Vergleich von Floats?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Venom
Beiträge: 3
Registriert: 28.04.2005 14:50

Bug beim Vergleich von Floats?

Beitrag von Venom »

a = 5 > 6
Debug a ; ergibt 0, das ist ok

a = 6 > 5
Debug a ; ergibt 1, auch ok

a = 5.0 > 6.0
Debug a ; ergibt 5 ???

a = 6.0 > 5.0
Debug a ; ergibt 6 ???

Das kann doch eigentlich nicht so gadacht sein, oder ?

Ciao,

Venom
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Die Vergleichsoperatoren "<" und ">" u.ä. geben in PureBasic keine Wahrheitswerte zurück. Wenn du deinen Code nämlich mit Variablen anstatt Konstanten verwendest, funkioniert es gar nicht mehr.

Du musst also immer If-Else-EndIf verwenden um solche Sachen zu testen. Das ist leider so.

Mich würde es auch freuen, wenn diese Eigenschaft, die viele Programmiersprachen besitzen, endlich auch in PureBasic verfügbar wäre.
Venom
Beiträge: 3
Registriert: 28.04.2005 14:50

Beitrag von Venom »

Hmm...

Bei Integerwerten funktioniert es doch offensichtlich. ( siehe oben )
Wenn das nicht so wäre, hätt ich ja nix gesagt, aber so ist das etwas inkonsequent. :freak:

Hat mich vorhin bestimmt ne Stunde gekostet, weil ich es immer mit integer getestet hab, und im Programm mit Floats kam nur noch Müll raus. :(
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Probier das hier mal aus. Da wirst du sehen, was ich meinte:

Code: Alles auswählen

a.l = 5
b.l = 6
c.l

c = a < b
Debug c

c = b < a
Debug c
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Vorsichtshalber Vergleiche nur nach:

If
While
Until

Da gabs schon bei vielen Probleme. Da BASIC "=" als Vergleichsoperator und auch als Zuweisungsoperator nimmt, kann man zur Zeit nur mit If usw. sicherstellen, das richtige Ergebnis zu erhalten. Wird sich hoffentlich mal ändern :)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Venom
Beiträge: 3
Registriert: 28.04.2005 14:50

Beitrag von Venom »

Echt unbefriedigend. :evil:

Aber danke für die Antworten. :allright:
Antworten