Aslında, NaN
bir sayı değil aslında olmasına rağmen hala sayısal bir tür :-)
NaN
yalnı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 NaN
değer diğerine eşit kabul edilmez, NaN
çünkü bunlar farklı değerler olabilir. Bununla birlikte, NaN
hala 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 NaN
ve 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 x
varsa x == x
, her zaman doğru olacaktır. Eğer x
bir olduğunu NaN
, daha sonra x == x
her zaman false olur. Size NaN
kolayca (sessizce) tespit etmenin bir yolunu sunuyor .