r.f = 12.0
If r = NaN()
Debug("r is not a number")
Else
Debug("r is a number")
EndIf
Warum liefern die beiden Codeschnipsel unterschiedlich Resultate?
PureBasic 5.72 LTS / Windows / MacOS / Linux Mint / starker Kaffee / noch stärkerer Kaffee / reines Koffein intravenös...
Motto: Hauptsache es funktioniert - aber schnell und richtig!
Eigentlich sind Vergleiche mit NaN nutzlos. Das ist jetzt nicht PB spezifisch, sondern in jeder Programmiersprache, die ich kenne. Aber in den meisten Sprachen kommt beim Vergleich mit NaN immer false raus, also auch bei einem Vergleich NaN = NaN, in PB anscheinend immer true. NaN ist halt einfach nicht definiert. Somit gibt es auch keine Ordnung oder Relation darauf. Ähnlich, wie mit Infinity, auch in der Mathematik: unendlich ist nicht gleich unendlich.
Du musst für solche Fälle also immer IsNaN benutzen.
In der Hilfe von PB steht zu NaN(): Returns the value representing NaN. The result is a float or double value depending on whether it is assigned to a float or double variable.
Deshalb ging ich eigentlich davon aus, dass NaN() in PB einen definierten Wert besitzt...
Scheint nicht so zu sein, oder...
LG, Klaus
PureBasic 5.72 LTS / Windows / MacOS / Linux Mint / starker Kaffee / noch stärkerer Kaffee / reines Koffein intravenös...
Motto: Hauptsache es funktioniert - aber schnell und richtig!