Zwei Fallstudien über NaN: Wenn Sprachdesign an NaN scheitert

Two Case Studies of NaN

IEEE-754-NaN ist seltsam und wird oft übersehen. Dieser Artikel zeigt zwei Fälle, in denen die Semantik von Programmiersprachen implizite Annahmen enthält, die mit NaN brechen. In Python führt eine Optimierung beim Listenvergleich dazu, dass `[nan] == [nan]` `True` ergibt, obwohl `nan == nan` `False` ist. In Lua führt die Implementierung von numerischen for-Schleifen zu unintuitivem Verhalten, wenn NaN als Startwert oder Schritt verwendet wird, da die Schleifenbedingungen auf Vergleichsoperatoren basieren, die bei NaN unerwartete Ergebnisse liefern. Der Autor weist darauf hin, dass diese Verhaltensweisen oft undokumentiert sind und schlägt vor, NaN explizit zu behandeln.

NaN ist seltsam. Und das bedeutet, dass andere Dinge sich seltsam verhalten, wenn sie mit NaN arbeiten.

Mehr von diesem Tag

2026-07-14