Aslında, NaNbir sayı değil aslında olmasına rağmen hala sayısal bir tür :-)
NaNyalnızca belirli değerin sayısal türün sınırlamaları içinde temsil edilemediği anlamına gelir (buna uyması için yuvarlanması gereken tüm sayılar için söylenebilir, ancak NaNözel bir durumdur).
Belirli bir NaNdeğer diğerine eşit kabul edilmez, NaNçünkü bunlar farklı değerler olabilir. Bununla birlikte, NaNhala bir sayı türüdür, tıpkı 2718 veya 31415 gibi.
Layman'ın terimleriyle açıklamak için güncellenmiş sorunuzla ilgili olarak:
Bir NaN ile karşılaştırma, kendisi ile karşılaştırılsa bile her zaman sırasız bir sonuç döndürür. Karşılaştırma tahminleri, ya sinyal ya da sinyalsizdir, sinyalleme versiyonları bu karşılaştırmalar için geçersiz bir istisna işaret etmektedir. Eşitlik ve eşitsizlik tahminleri sinyal vermiyor, bu nedenle x = x dönen false, x'in sessiz bir NaN olup olmadığını test etmek için kullanılabilir.
Tüm bu araçlar (parçalara ayrılmış):
Bir NaN ile karşılaştırma, kendisi ile karşılaştırılsa bile her zaman sırasız bir sonuç döndürür.
Temel olarak, a NaN, diğeri dahil NaN, hatta kendisi de dahil olmak üzere başka herhangi bir sayıya eşit değildir .
Karşılaştırma tahminleri, ya sinyal ya da sinyalsizdir, sinyalleme versiyonları bu karşılaştırmalar için geçersiz bir istisna işaret etmektedir.
Bir NaNve başka bir sayı arasında karşılaştırma (daha büyük, daha büyük, vb.) İşlemleri yapmaya çalışmak ya bir istisnanın atılmasına (sinyalizasyon) ya da sonuç olarak sadece yanlış duruma (sinyalsiz veya sessiz) neden olabilir.
Eşitlik ve eşitsizlik tahminleri sinyal vermiyor, bu nedenle x = x dönen false, x'in sessiz bir NaN olup olmadığını test etmek için kullanılabilir.
Eşitlik testleri (eşit, eşit değil) asla sinyal vermez, bu nedenle bunları kullanmak bir istisna yaratmaz. Normal bir numaranız xvarsa x == x, her zaman doğru olacaktır. Eğer xbir olduğunu NaN, daha sonra x == xher zaman false olur. Size NaNkolayca (sessizce) tespit etmenin bir yolunu sunuyor .