Seite 1 von 2

Was bedeutet 1.#QNB

Verfasst: 20.11.2006 10:32
von dibro
Hi,
in meinen Stringgadgets werden manchmal Ausgaben wie 1.#QNB dargestellt.
Zugegeben, es handelt sich dabei um unzulässige Eingabewerte in anderen Gadgets.
Aber wo finde ich, was das bedeutet?
OnError reagiert auch nicht darauf.
In Doku, Hilfe und Forum zu 1.#QNB keine Fundstelle

Re: Was bedeutet 1.#QNB

Verfasst: 20.11.2006 10:52
von Kiffi
> in meinen Stringgadgets werden manchmal Ausgaben wie 1.#QNB
> dargestellt.

und wer trägt diesen Wert in das StringGadget ein? PB?

http://www.home.agilent.com/agilent/faq ... &id=768821

Grüße ... Kiffi

Verfasst: 20.11.2006 11:06
von dibro
das ist das Ergebnis einer Berechnung in einer Schleife.
Ich bin dem Fehler auf der Spur, wüsste nur gern, was diese Kürzel zu bedeuten haben, die offensichtlich während der Laufzeit erzeugt werden.
Hier die Debuggerausgabe der Variablen:
  • 0.0
    0.0
    79.84917449951172
    99.79228210449219
    159.00018310546875
    179.14256286621094
    232.26686096191406
    248.126708984375
    301.4580078125
    309.51821899414063
    369.00634765625
    363.35360717773437
    438.41998291015625
    406.2740478515625
    515.68072509765625
    430.17092895507812
    613.72430419921875
    414.23883056640625
    759.24359130859375
    307.97171020507812
    999.79278564453125
    -2.26464295387268
    1322.2110595703125
    -552.6807861328125
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
    1.#QNAN
dieser Wert wird weiter verarbeitet und führt nach einer Berechnung dann zu 1.#QNB, was über SetGadgetText(#String_xx, StrF(Wert,0)) dann ausgegeben wird und natürlich unbrauchbar ist. Onerror merkt nix davon.

Verfasst: 20.11.2006 11:23
von Karl
Die FPU liefert als Berechnungsergebnis einen Fehler (NaN = Not a Number). Vgl. IEEE 754: http://de.wikipedia.org/wiki/IEEE_754

Ich denke, der Cast verwandelt die Darstellung in 1.QNB.

Gruß Karl

Verfasst: 20.11.2006 11:29
von #NULL
mit dem code der das berechnet könnte man vermutlich mehr anfangen, als mit den ergebnissen.
vielleicht kriegst du mit Double keine probleme, dann liegt es am wertebereich. NaN heißt not a number und ist das 'ergebnis' von mathematisch sinn- oder wert-losen berechnungen, wie zum beispiel division durch null, bzw ich glaub auch overflows ect.
es gibt verschiedene solcher sonder-ergebnisse ..hatte schonmal jemand probleme mit:
http://www.purebasic.fr/german/viewtopic.php?t=8969 (..aber das hilft dir auch nix)

Verfasst: 20.11.2006 11:35
von Froggerprogger
1.#QNB ist (vielleicht) nur ein synonym für 1.#QNAN.
Mach doch mal folgendes:
Wenn dein Wert NaN ist, und auch wenn er NB ist, dann führe folgenden Code aus, wenn der Wert in wert.d gespeichert ist:

Code: Alles auswählen

wert.d = 123123.2

q.q = PeekQ(@wert)
Debug RSet(Bin(q), 32, "0")
Dann können wir den Bitstring des Werts mal interpretieren.

Verfasst: 20.11.2006 11:45
von #NULL
das Q steht scheinbar für 'quiet', im gegensatz zum S für 'signalling'
karl's link hat geschrieben:Eine signalisierende NaN löst im Gegensatz zu einer stillen NaN eine Ausnahme (Trap) aus, wenn sie als Operand einer arithmetischen Operation auftritt

Verfasst: 20.11.2006 12:22
von dibro
Danke, hat mir geholfen, vor allem Karl's Link zum Wiki.
Jetzt weiß ich, "was soll es bedeuten".
Mein Prob habe ich auch gelöst. Es war eine Regelschleife, in der ein Wert aus dem vorangegangenen Durchlauf verarbeitet wurde. Bei zu großer Steilheit der Ausgangsgröße fing die Schleife an zu Schwingen. Hab ich durch Mittelwertbildung behoben, bringt zudem ein genaueres Ergebnis.

Verfasst: 20.11.2006 12:51
von #NULL
wüßte auch gerne mal was #QNB ist, hab nur andere erzeugen können

Code: Alles auswählen

Debug "---------------------------"

pos_inFinite.f = 1
For i=0 To 4
  Debug pos_inFinite
  pos_inFinite*9999999999999
Next
Debug "---------------------------"

neg_inFinite.f = -1
For i=0 To 4
  Debug neg_inFinite
  neg_inFinite*9999999999999
Next
Debug "---------------------------"

neg_inDefinite.f = Sqr(-16)
Debug neg_inDefinite
Debug "---------------------------"

qNaN.f= -neg_inDefinite
Debug qNaN
Debug "---------------------------"

f.f=1
Debug f/0
f=0
Debug f/0
f=-1
Debug f/0
hier gibt's die binären darstellungen, aber auch nicht zu #QNB
http://www.purebasic.fr/english/viewtop ... ght=#79932

Verfasst: 20.11.2006 12:59
von Tafkadasom2k5
dibro hat geschrieben:Bei zu großer Steilheit der Ausgangsgröße fing die Schleife an zu Schwingen.
Was bedeutet das..?
Also was 'Schwingen' bedeutet ist klar, aber wie soll eine Kurve oder ein Graph bei gleichem Algorhytmus anfangen plötzlich zu schwingen..?

Gr33tz
Tafkadasom2k5