Zwei Fallstudien über NaN: Wie Python und Lua an der seltsamen Zahl scheitern
Two Case Studies of NaN
NaN (Not a Number) ist eine Besonderheit von IEEE-754, die oft übersehen wird. In zwei Fallstudien zeigt der Autor, wie diese Annahme in Python und Lua zu unerwartetem Verhalten führt. In Python vergleicht `[nan] == [nan]` zu `True`, obwohl `nan == nan` `False` ist – eine Optimierung, die auf der Annahme basiert, dass Objekte immer gleich sich selbst sind. In Lua führt NaN in numerischen for-Schleifen zu überraschenden Ergebnissen, da die Implementierung Vergleichsoperatoren verwendet, die für NaN nicht definiert sind. Der Autor schlägt vor, NaN in solchen Kontexten explizit zu verbieten.
Die Verwendung von NaN führt dazu, dass der spezifische Vergleichsoperator, der von der Implementierung verwendet wird, in das Verhalten des Interpreters durchsickert.