NaN türü neden 'sayı' döndürüyor?


166

Sadece meraktan.

typeof NaNSayı çok mantıklı görünmüyor . Bu arada NaN === NaNya da NaN == NaNyanlış döndürmek gibi . Bu javascript'in özelliklerinden biri mi yoksa bunun bir nedeni var mı?

Düzenleme: Cevaplarınız için teşekkürler. Yine de birileri kafa karıştırmak kolay bir şey değil. Cevapları ve wiki'yi daha iyi anladım ama yine de böyle bir cümle

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.

sadece başımı dönüyor. Birisi bunu (örneğin, matematikçi) okunabilir dilde insan olarak çevirebiliyorsa, minnettar olurum.


17
+1: "NaN bir sayı ama sayı değil. Vay be ... ne?!"
9'da

11
Ekstra eğlence için; (NaN! == NaN) == doğru
Alex K.

1
Daha da eğlenceli (ama anlaşılabilir bir şekilde geliyor, isNaN bir boole döndürür): isNaN (parseInt ('nodice')) === isNaN (parseInt ('someOtherNaN')) === true;
KooiInc

1
JQuery kullanıyorsanız isNumeric, türü kontrol etmeyi tercih ederim : $.isNumeric(NaN); return false, burada as $.type(NaN);, sayı döndürür. Sayısal
Justin

3
Profesyonel matematikçi olarak cümlenin kesin matematik dili ile çok az ortak noktası olduğunu söylemeliyim.
Dmitri Zaitsev

Yanıtlar:


53

Bir Sayı Değil anlamına gelir. Javascript'in bir tuhaflığı değil, ortak bilgisayar bilimi prensibidir.

Gönderen http://en.wikipedia.org/wiki/NaN :

NaN'i döndüren üç tür operasyon vardır:

En az bir işlenen olarak bir NaN ile işlemler

Belirsiz formlar

  • 0/0, ∞ / ∞, ∞ / −∞, −∞ / ∞ ve −∞ / −∞ bölümleri
  • 0 × ∞ ve 0 × −∞ çarpımları
  • Güç 1 ^ ∞
  • ∞ + (−∞), (−∞) + ∞ ilaveleri ve eşdeğeri çıkarma.

Karmaşık sonuçlar veren gerçek operasyonlar:

  • Negatif bir sayının kare kökü
  • Negatif bir sayının logaritması
  • 90 derecenin tek bir katının tanjantı (veya π / 2 radyan)
  • −1'den küçük veya +1'den büyük bir sayının ters sinüsü veya kosinüsü.

Tüm bu değerler aynı olmayabilir. Bir NaN için yapılan basit bir test value == value, yanlıştır.


46
Daha da basit bir testisNaN(value)
Alsciende

4
@Alsciende buna eşdeğer değil. isNaN(undefined)döner true, ama undefined == undefinedaynı zamanda doğrudur. Aynı durum, diğer tüm sayı olmayan türler için de geçerlidir null.
Andy

7
Başka bir deyişle, value !== valuemuhtemelen valuegerçekten olup olmadığını test etmenin en kısa yoludur NaN.
Andy

1
Haklı görünüyorsun, @Andy. Şimdi bu bir tuhaflık.
Alsciende

2
"Bu değerler aynı olmayabilir" ifadesinin bir anlamı yoktur, çünkü bu değerler mevcut değildir.
Dmitri Zaitsev

103

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 .


1
son iki cümleye katılmama rağmen iyi bir açıklama: x'in bir NaN olup olmadığını kontrol etmenin daha iyi bir yolu isNaN () işlevini kullanıyor
Carlos Barcelona

@DominicRodger şöyle düşünüyorum: typeof a === 'number'"a dahili olarak IEEE 754 şamandıra olarak saklanır"
Andy

Bir an farklı değerlerle üretilebiliyorsa neden Infinity === Infinitygeri dönüyor : 1.0 / 0.0 veya 2.0 / 0.0? trueInfinity
Hashem Qolami

1
@Hashem, büyük olasılıkla aynı sonsuzluk olarak kabul edildikleri için. Tekrar çıkarma gibi bölünme tedavisi, bu iki ya da biri, bu ulaşılabilecek (ya da, daha doğrusu, için gerekli adımlar aynı sayıda başlangıç fark yoktur değil ulaşmak) sıfır. Matematik gurularının farklı sonsuzluk sınıflarına sahip olduğunu anlıyorum ama (1) aynı sınıfta şüphelendim 1/0ve 2/0yatıyorum ve (2) IEEE754'te ( +/-tabii ki hariç ) sadece bir sonsuzluk sınıfı var .
paxdiablo

1
Bu istisnai "gerçek sayıları" anlamlı bir şekilde tanımlamanın hiçbir yolunun farkında değilim. Matematikte, negatiflerin günlüğü ve kökü, yalnızca realitelerin çoklu sayılara değerlendirdikleri karmaşık sayılara genişletilmesi yoluyla elde edilebilir 0/0ve "değerinin" bütün set olduğunu söylemek dışında anlamlı bir şekilde tanımlanmamıştır. sayılar. Ve tanımlanmış olsalar bile, Math.log(-1) == Math.log(-1)hala değerlendirirler false. Bu yüzden sadece "gerçek sayılar" dışında NaNdeğil, karşılaştırılsa bile kullanılmadılar.
Dmitri Zaitsev

20

ECMAScript (JavaScript) standardı Numbers, IEEE 754 yüzen olan NaNve olası bir değer içeren belirtir .

ECMA 262 5e Bölüm 4.3.19 : Sayı değeri

çift ​​kesinlikli 64 bit ikili biçim IEEE 754 değerine karşılık gelen ilkel değer.

ECMA 262 5e Bölüm 4.3.23 : NaN

IEEE 754 "Sayı Değil" değeri olan sayı değeri.

Wikipedia'da IEEE 754

Kayan Nokta Aritmetiği için IEEE Standardı Elektrik ve Elektronik Mühendisleri Enstitüsü tarafından kurulan teknik bir standarttır ve kayan nokta hesaplaması için en yaygın kullanılan standarttır [...]

Standart,

  • aritmetik biçimler : sonlu sayılar (imzalı sıfırlar ve alt normal sayılar dahil), sonsuzluklar ve özel "sayı değil" değerlerinden (NaN) oluşan ikili ve ondalık kayan nokta veri kümeleri

[...]


8

typeof NaNdöner 'number', çünkü:

  • ECMAScript spec Sayı türü NaN içerir diyor:

    4.3.20 Sayı türü

    "Sayı Değil" (NaN) değerleri, pozitif sonsuz ve negatif sonsuz dahil tüm olası Sayı değerleri kümesi

  • Yani typeofbuna göre döner:

    11.4.3 Operatör türü

    Üretim UnaryExpression : typeof UnaryExpression aşağıdaki gibi değerlendirilir:

    1. Let val değerlendirerek sonucu UnaryExpression .
    2. Eğer Tip ( val ) 'dir Referans ardından,
      1. Eğer IsUnresolvableReference ( val ) 'dir doğrudur , dönüş "undefined".
      2. Let Val olmak GetValue ( val ).
    3. String tarafından belirlenen Dönüş Tipi ( val Tablo 20 göre).

                    Table 20 — typeof Operator Results
    ==================================================================
    |        Type of val         |              Result               |
    ==================================================================
    | Undefined                  | "undefined"                       |
    |----------------------------------------------------------------|
    | Null                       | "object"                          |
    |----------------------------------------------------------------|
    | Boolean                    | "boolean"                         |
    |----------------------------------------------------------------|
    | Number                     | "number"                          |
    |----------------------------------------------------------------|
    | String                     | "string"                          |
    |----------------------------------------------------------------|
    | Object (native and does    | "object"                          |
    | not implement [[Call]])    |                                   |
    |----------------------------------------------------------------|
    | Object (native or host and | "function"                        |
    | does implement [[Call]])   |                                   |
    |----------------------------------------------------------------|
    | Object (host and does not  | Implementation-defined except may |
    | implement [[Call]])        | not be "undefined", "boolean",    |
    |                            | "number", or "string".            |
    ------------------------------------------------------------------

Bu davranış, IEEE Kayan Nokta Aritmetiği Standardı (IEEE 754) ile uyumludur :

4.3.19 Sayı değeri

çift ​​kesinlikli 64 bit ikili biçim IEEE 754 değerine karşılık gelen ilkel değer

4.3.23 NaN

IEEE 754 “Sayı Değil” değeri olan sayı değeri

8.5 Sayı Türü

Sayı türü, Tam Kayan Nokta Aritmetiği için IEEE Standardında belirtilen çift kesinlikli 64 bit format IEEE 754 değerlerini temsil eden tam 18437736874454810627 (yani 2 53 −2 64 +3) değerlerine sahiptir ( yani 2 53 −2) IEEE Standardının farklı “Sayı Değil” değerleri ECMAScript'te tek bir özel NaN değeri olarak gösterilir. ( NaN değerinin program ifadesi tarafından üretildiğini unutmayın NaN.)


5

NaN geçerli bir kayan noktalı değerdir ( http://en.wikipedia.org/wiki/NaN )

ve NaN === NaN yanlıştır, çünkü bunlar aynı sayı olmayan


1
Üzgünüm ama bunu düşünmenin iyi bir yolu olmadığını söylemeliyim. "mutlaka aynı sayı olmayan" değil, her zaman farklı oldukları anlamına gelmez ve karşılaştırmak yanlıştır. NaN'yi ölçmemek ve sadece bilgi tabanımızda bir tuhaflık olarak düşünmemek en iyisidir.
Dave

1
Peki neden hepsi bir Infinityşekilde aynı? Düşüncesi olan var mı?
Hashem Qolami

5

NaN != NaNçünkü SAME numaranın numarası gerekli değildir. Bu yüzden çok mantıklı ... Ayrıca şamandıralar neden +0.00 ve -0.00'a sahip değiller. Yuvarlama, aslında sıfır olmamalarını sağlayabilir.

Typeof gelince, bu dile bağlıdır. Ve çoğu dil, NaN'nin nasıl sınıflandırıldıklarına bağlı olarak bir şamandıra, çift veya sayı olduğunu söyleyecektir ... Bunun bilinmeyen bir tür veya boş olduğunu söyleyecek hiçbir dil bilmiyorum.


1
ehr, düşünün: var x = parseInt ('zar yok'), y = x; Şimdi her iki NaN'nin de tamamen aynı olduğunu söyleyebilirim? Ama hayır, x === y da yanlış döndürür.
KooiInc

evet, ama emin olamıyorsunuz ve bu yüzden aynı değiller. Veritabanındaki NULLable mantığıyla aynı mantıktır. Birçok insan bunları diğer programlama dillerinden gelen boş göstergelerle aynı olarak düşünmesine rağmen, aslında farklı bir anlambilime sahiptir. Onlar "BİLİNMİYOR" ve bu nedenle diğerine kıyasla bir NULL değeri her zaman yanlıştır. Bir NULL değeri üzerinde hesaplama yapmak NULL sonucuyla sonuçlanır. Bunun yerine BİLİNMİYOR olarak adlandırılan değerin perspektifinden bakmaya çalışın
Cine

Tip olarak number, NaNilkeldir ve dolayısıyla değeri ile benzersiz bir şekilde belirlenir.
Dmitri Zaitsev

4

NaNbir Sayı Değil anlamına gelir . Sıfıra bölme gibi geçersiz bir işlemin sonucunu temsil eden sayısal veri türlerinin (genellikle kayan nokta türleri, ancak her zaman değil) bir değeridir.

Adları bir sayı olmadığını söylese de, onu tutmak için kullanılan veri türü sayısal bir türdür. Yani JavaScript'te, veri türünü sormak NaNgeri dönecektir number( alert(typeof(NaN))açıkça gösterildiği gibi).


Aslında sıfıra bölmek Infinitydeğil olarak değerlendirilirNaN
Dmitri Zaitsev

2

Javascript, karşılaştığı herhangi bir şeyi belirtmek için NaN kullanır; bu, özellikleriyle başka bir şekilde temsil edilemez. Bu bir sayı olmadığı anlamına gelmez. Bu, karşılaşmayı tanımlamanın en kolay yoludur. NaN, bu nesneye veya ona atıfta bulunan bir nesneye, javascript tarafından başka bir şekilde temsil edilemeyeceği anlamına gelir. Tüm pratik amaçlar için, 'bilinmiyor'. 'Bilinmeyen' olmak size ne olduğunu ya da kendisi olsa bile söyleyemez. Atanmış olduğu nesne bile değildir. Size sadece bunun ne olmadığını söyleyebilir ve yokluk veya hiçlik sadece bir programlama dilinde matematiksel olarak tanımlanabilir. Matematik sayılarla ilgili olduğundan, javascript NaN gibi bir hiçliği temsil etmez. Bu onun bir sayı olmadığı anlamına gelmez. Bu, mantıklı olan başka bir şekilde okuyamayacağımız anlamına gelir. Bu yüzden yapabilir ' t bile eşit. Çünkü öyle değil.


2

NaNAnlamını daha kesin ve daha az kafa karıştırıcı olarak tanımlamak için daha iyi bir isim , sayısal bir istisna olacaktır . İlkel tipte (dil tasarımına göre) olduğu düşünülen başka bir tür istisna nesnesidir, aynı zamanda sahte kendi kendine karşılaştırmasında ilkel olarak ele alınmaz. Nerede karışıklık. Ve dil, uygun istisna nesnesi ve ilkel sayı arasında seçim yapmak için "aklını tutmaz" sürece , karışıklık kalacaktır.

Rezil olmayan eşitlik NaNkendisine, hem ==ve ===basit bir tür ortaya bu istisna nesnesini zorlayarak kafa karıştırıcı tasarımı bir tezahürüdür. Bu, bir ilkelin değeri ile benzersiz olarak belirlendiği temel ilkeyi ihlal eder . NaNİstisna olarak görülmesi tercih edilirse (farklı türler olabilir), ilkel olarak "satılmamalıdır". Ve ilkel olmak isteniyorsa, bu ilkenin geçerli olması gerekir. Bozulduğu sürece, JavaScript'te olduğu gibi ve ikisi arasında gerçekten karar veremeyiz, dahil olan herkes için gereksiz bilişsel yüke yol açan karışıklık devam edecektir. Bununla birlikte, ikisi arasında seçim yaparak düzeltilmesi gerçekten kolaydır:

  • ya NaNo bilgiyi uygulanmakta olanın dışına atmanın aksine, hata ayıklaması zor kodlara yol açmanın aksine, istisnanın nasıl ortaya çıktığı hakkında yararlı bilgileri içeren özel bir istisna nesnesi oluşturabilir ;
  • ya NaNda ilkel tipte bir varlık number(daha az kafa karıştırıcı bir şekilde "sayısal" olarak adlandırılabilir) yapabilir, bu durumda kendisine eşit olmalı ve başka bilgi içeremez; ikincisi açıkça daha düşük bir seçimdir.

Zorlama sadece akla avantajı NaNiçine numbertip herhangi bir sayısal ifade içine geri atmak mümkün ediliyor. Bununla birlikte, bunu kırılgan bir seçim yapar, çünkü içeren herhangi bir sayısal ifadenin sonucu, değerlendirme gibi öngörülemeyen sonuçlara yol NaNaçacaktır NaNveya istisna tutmak yerine geri dönecektir .NaN < 0falseboolean

Ve "işler oldukları gibi olsa bile" hiçbir şey, kodumuzu daha öngörülebilir ve daha kolay hata ayıklanabilir hale getirmemize yardımcı olmak için kendimiz için bu açık ayrımı yapmamızı engellemez. Uygulamada, bu istisnaları tanımlamak ve onlarla istisna olarak ilgilenmek anlamına gelir. Ne yazık ki, daha fazla kod anlamına gelir, ancak Umarım TypeScript of Flowtype gibi araçlar tarafından hafifletilir.

Ve sonra dağınık sessiz vs gürültülü aka sinyal NaNayrımı var . Bu gerçekten istisnaların nasıl ele alındığı, istisnaların kendileri değil ve diğer istisnalardan farklı bir şey değildir.

Benzer şekilde, Infinityve gerçek çizginin uzantısında ortaya çıkan sayısal tip+Infinity unsurlarıdır, ancak bunlar gerçek sayılar değildir. Matematiksel olarak, ya veya ' ya yaklaşan gerçek sayı dizileri ile temsil edilebilirler .+-Infinity


1

Bunun nedeni NaNJS'deki Number nesnesinin bir özelliği olması, bunun bir sayı olmasıyla hiçbir ilgisi yoktur.


Diğer her nesne gibi, Number da her tür özelliğe sahip olabilir. Number.fu = "bar"; alert(typeof Number.fu);
Alsciende

NaNNumber.NaNne olursa olsun, depolanan değer değildir . NaNSayı türünün ilkel bir değeridir. Ve ayrıca, değeri Number.NaNolduğunu NaN, ama bu hiçbir ilişkisi yoktur.
Oriol

1

NAN'ı düşünmenin en iyi yolu, bilinen bir sayı olmamasıdır . Bu yüzden NAN! = NAN çünkü her NAN değeri benzersiz bir bilinmeyen sayıyı temsil eder. Kayan nokta sayıları sınırlı bir değer aralığına sahip olduğundan NAN'ler gereklidir. Bazı durumlarda, alt bitlerin kaybolduğu durumlarda yuvarlama meydana gelir, bu da 1.0 / 11 * 11! = 1.0 gibi saçmalık görünmesine neden olur. Daha büyük olan gerçekten büyük değerler, sonsuzluğun mükemmel bir örnek olduğu NAN'lardır.

10'dan büyük değerleri göstermek için sadece on parmağımız olduğu göz önüne alındığında, bu değerlerin NAN olması gerektiği anlamına gelir, çünkü bu 10'dan büyük değerin gerçek değerini kaybettik. Aynı durum, bir kayan noktada tutulabilecek değerlerin sınırlarını aştığı kayan nokta değerleri için de geçerlidir.


Sonsuzluk bir NaN ile temsil edilmez. Aralığın dışında bir sayıyı temsil etmeye çalışmak aşağı (maks / -inf'ye) veya yukarı (min / + inf'ye) yuvarlanır.
OrangeDog

1

Çünkü NaN sayısal bir veri türüdür.


1

NaN, bir tür bakış açısından bir sayıdır, ancak 1, 2 veya 329131 gibi normal bir sayı değildir. "Sayı Değil" adı , temsil edilen değerin özel olduğu ve IEEE biçimi spec etki alanıyla ilgili olduğunu, javascript dili.


1

JQuery kullanıyorsanız isNumeric, türü kontrol etmeyi tercih ederim :

console.log($.isNumeric(NaN));  // returns false
console.log($.type(NaN));       // returns number

http://api.jquery.com/jQuery.isNumeric/


Teşekkürler dostum. Ben ile ilgili sorunlar vardı isNumberden utiltypescript paketi. jQueryProjemizde hala kullandığımız iyi, bunun yerine önerinizi kullandı.
Ashok MA

Rec için, typescript isNumberfrom için utilde döner . trueNaN
Ashok MA

0

Javascript, standart 64 bit çift kesinlikli kayan noktalı olan yalnızca bir sayısal veri türüne sahiptir. Her şey bir çift. NaN, çiftin özel bir değeridir, ancak yine de bir çifttir.

Tek parseIntyapmanız gereken dizenizi sayısal bir veri türüne "dökmek", dolayısıyla sonuç her zaman "sayı" dır ; yalnızca orijinal dize ayrıştırılamazsa değeri NaN olur.


0

NaN hala sayısal bir türdür, ancak geçerli bir sayıyı temsil edemeyen değeri temsil eder.


0

NaN'ın özel bir vaka nesnesi olduğunu söyleyebiliriz. Bu durumda, NaN'nin nesnesi hiçbir matematiksel anlam taşımayan bir sayıyı temsil eder. Matematikte INFINITE gibi başka özel durum nesneleri de vardır.

Bununla birlikte hala bazı hesaplamalar yapabilirsiniz, ancak bu garip davranışlar verecektir.

Daha fazla bilgi burada: http://www.concentric.net/~ttwang/tech/javafloat.htm (java tabanlı, javascript değil)


0

Javascript'i sevmelisin. Bazı ilginç küçük tuhaflıkları var.

http://wtfjs.com/page/13

Bu tuhaflıkların çoğu, mantıklı bir şekilde çalışmayı bırakırsanız veya sayı teorisi hakkında biraz bilginiz varsa açıklanabilir, ancak yine de, onları bilmiyorsanız sizi yakalayabilirler.

Bu arada, http://wtfjs.com/ ' in geri kalanını okumanızı tavsiye ederim - bulabileceğinizden çok daha ilginç tuhaflıklar var!


0

NaN değeri gerçekten Number.NaN olduğundan, bir sayı olup olmadığını sorduğunuzda evet diyecektir. İsNaN () çağrısını kullanarak doğru şeyi yaptınız.

Bilgi için, NaN ayrıca Sayılar üzerinde sıfırdan veya negatif bir sayının kareköküne bölünmesi gibi tanımlanmamış işlemlerle de döndürülebilir.


Hangi anlamda "değer" dir? NaN == Number.NaNdeğerlendirir false!
Dmitri Zaitsev

@DmitriZaitsev Konuyu okudunuz mu? Ve (parseInt ("nan") == Number.NaN) komutunu denediniz mi? Ayrıca deneyin! = Ve size ne anlattığını görün.
Rob

Üzgünüm, aptal NaN==NaNvarlığı unuttum, falseherkesin acı çekmesini sağlamak için bir sadist olmalıydı.
Dmitri Zaitsev

0

Bir örnek

Bir dizeyi sayıya dönüştürdüğümüzü hayal edin:

Number("string"); // returns NaN

Veri türünü sayı olarak değiştirdik ancak değeri bir sayı değil!


Sorunun amacını kaçırmış görünüyorsunuz. NaNait sayı türü. Soru nedenini sormak.
Quentin

@Quentin son satırda açıkladım.
Amir Fo

-1

Sayı türünün POSITIVE_INFINITY olarak özel bir değeridir

Neden? Tasarım gereği

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.