Totale Falschmeldung!

Anfängerfragen zum Programmieren mit PureBasic.
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Totale Falschmeldung!

Beitrag von PB42 »

Hallo, eine Verzweigung soll reagieren, wenn der zuvor gemessene Wert 0 ist. Das tut sie auch... allerdings wenn der zuvor gemessene Wert alles andere als 0 ist. Der Code:

Code: Alles auswählen

bq.d = 57320043

If Pow(bq.d,0.5) - Int(Pow(bq.d,0.5)) = 0

Debug Pow(bq.d,0.5) - Int(Pow(bq.d,0.5)) ;0.000132....

EndIf
Die Quadratwurzel von 57320043 geht also eindeutig NICHT auf und trotzdem läuft die Verzweigung so, als würde sie aufgehen. Dabei zeigt doch der Debugger höchstselber an, daß der Wert NICHT 0 ist. Habt Ihr sowas schonmal erlebt???

PB42
Zuletzt geändert von Kaeru Gaman am 27.10.2009 18:47, insgesamt 1-mal geändert.
Grund: code-tags korrigiert
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Typecasting Problem

Beitrag von Kaeru Gaman »

das ist wohl ein Typecasting Problem.

Code: Alles auswählen

bq.d = 57320043

a.d = Pow(bq.d,0.5)
b.d = Int(Pow(bq.d,0.5))

Debug a
Debug b

If a - b = 0
  Debug "=0"
Else
  Debug "!=0"
EndIf
vermutlich werden zu viele werte im If-Ausdruck mit Integer gecastet.
beim impliziten Typecasting von PB steckt man nicht immer drin, was wo wie geschieht.

benutze container/dummies, wie in meinem Beispiel, dann stellst du sicher, dass es so reagiert wie du erwartest.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Re: Totale Falschmeldung!

Beitrag von TomS »

Code: Alles auswählen

bq.d = 57320043

result.d=Pow(bq.d,0.5) - Int(Pow(bq.d,0.5))
If  result = 0
    Debug Pow(bq.d,0.5) - Int(Pow(bq.d,0.5)) ;0.000132....
EndIf
So geht's
PB42
Beiträge: 243
Registriert: 13.10.2005 03:21

Re: Totale Falschmeldung!

Beitrag von PB42 »

Ich habe das jetzt so gemacht wie Kaeru das vorgeschlagen hat und das läuft. Vielen Dank!

PB42
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Totale Falschmeldung!

Beitrag von Kaeru Gaman »

der Vorschlag von TomS unterscheidet sich kaum, er packt nur gleich das Ergebnis in einen einzelnen Container.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Totale Falschmeldung!

Beitrag von Kiffi »

@PB42: Bitte diesen Thread mit einem aussagekräftigen Betreff versehen!

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Totale Falschmeldung!

Beitrag von Kaeru Gaman »

schlag was vor... :?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Totale Falschmeldung!

Beitrag von Kiffi »

Kaeru Gaman hat geschrieben:schlag was vor... :?
wieso sollte ich? Das ist die Aufgabe des Threaderstellers.
a²+b²=mc²
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

Re: Totale Falschmeldung!

Beitrag von ts-soft »

Kaeru Gaman hat geschrieben:schlag was vor... :?
Warum muß bei Typumwandlung von Karotten im Quadrat alles in dumme Container gepackt werden?

:bounce:
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Totale Falschmeldung!

Beitrag von HeX0R »

"Typecasting die 34."
Antworten