Sayı değeri, herhangi bir sayısal karakter dizisinden oluşur. Örneğin:
5
Sayı veri türü, sayısal kavramları temsil eden birkaç özel global özellik de içerir. Örneğin Infinity
ve NaN
. Değer, sayı olmayan değerler üzerinde matematiksel hesaplamalar yapmaya çalışmanın potansiyel sonucu olarak "sayı değil" anlamına gelir.
Sayı nesnesi
Number()
işlevine bir değer iletildiğinde, bu değer eşdeğer sayıya dönüştürülür. Örneğin, sayısal bir dize, eşdeğer bir temel sayı karakteriyle sonuçlanır:
Number( "10" );
> 10
Number()
öğesine false
veya null
değeri iletildiğinde 0
değeri, true
değeri ise 1
değerini döndürür.
Number( null );
> 0
Number( false );
> 0
Number( true );
> 1`
Bir değer dönüştürülemiyorsa (undefined
veya sayısal olmayan karakterler içeren bir dizede olduğu gibi) Number
işlevi NaN
değerini döndürür:
Number( undefined );
> NaN
Number( "The number 3." );
> NaN
Prototip devralmada açıklandığı üzere, değişmez sayı yerine Number
nesnesi oluşturduğundan, büyük olasılıkla Number
nesnesini oluşturucu olarak kullanmak için çok az bir nedeniniz olacaktır.
let numObject = new Number( 15 );
numObject;
> Number { 15 }
Bu nesne, matematiksel işlemler için kendisine atanan değer olarak davranır, ancak veri türleri eşleşmediğinden ve değişmez bir değere göre herhangi bir pratik fayda sağlamadan sayı değişmez değerlerine karşı katı eşitlik karşılaştırmalarında başarısız olur.
let tenObject = new Number( 10 );
tenObject + 5;
> 15
tenObject === 10;
> false
Kayan değerler ve tam sayılar
JavaScript'in yalnızca bir sayı türü vardır: -2^1024
ile 2^1024
arasında 64 bit IEEE 754-1985 çift duyarlıklı kayan nokta sayıları. JavaScript herhangi bir sayıyı bellekte depolamadan önce, bu sayıyı float olarak da adlandırılan bir ikili kayan nokta sayısına dönüştürür.
Bu 64 bit depolama (bir pozitif veya negatif "işaret" biti, üs için 11 bit ve bir kesir için 52 bit), izin verilen bir aralığa uymayan herhangi bir basamakta hassasiyet hatalarına neden olabilir. Bu sınırlama, JavaScript'in sayı veri türünden kaynaklanır.
0.1 + 0.7
> 0.7999999999999999
Sayı değerleri, bunun yerine, -(2^53 − 1)
ile 2^53 − 1
arasında kesirsiz bir kayan nokta olan tam sayı olarak depolanabilir. Kayan değerler ve tam sayılar aynı temel şekilde depolandığından, bu sayıların çalışma şeklinde pratik bir fark yoktur. Bununla birlikte, kesinlik hatalarını önlemek için mümkün olduğunda tamsayı kullanmanızı öneririz.
Sayı operatörleri
Standart matematiksel operatörleri temel sayı sayılarıyla kullandığınızda, matematiksel işlem sırası geçerlidir. Parantez içine alınmış tüm ifadeler önce değerlendirilir, ardından üsler, çarpma, bölme, toplama ve çıkarma işlemleri takip edilir.
Operatör | Ad | Açıklama | Kullanım | Sonuç |
---|---|---|---|---|
+ |
Toplama | 2+2 |
4 |
|
- |
Çıkarma | 4-2 |
2 |
|
* |
Çarpım | 2*5 |
10 |
|
/ |
Grup | 10/5 |
2 |
|
++ |
Artış | Sayıya bir ekler | 2++ |
3 |
-- |
Azalt | Sayıdan bir çıkarır | 3-- |
2 |
** |
Üs | İlk işleneninin, ikinci işlenenin kuvvetine yükseltilmesi sonucunu döndürür. |
2**4 |
16 |
% |
Kalan | İlk işleneni ikinci işlenene bölündüğünde kalan kısmını döndürür. |
12%5 |
2 |
Bir değişkenin değeri üzerinde matematiksel işlem gerçekleştirmek ve yeni hesaplanan değeri hemen değişkene atamak için matematiksel atama operatörlerini de kullanabilirsiniz.
Operatör | Ad | Kullanım |
---|---|---|
+= |
Ekleme ataması | myValue += 2 |
-= |
Çıkarma ataması | myValue -= 2 |
*= |
Çarpma ataması | myValue *= 2 |
/= |
Bölüm ataması | myValue /= 2 |
**= |
Üs ataması | myValue **= 2 |
%= |
Kalan atama | myValue %= 2 |
Sembolik değerler
Temel sayı, birkaç özel durum için de geçerlidir: "sayı değil" değeri (NaN
) ve pozitif (Infinity
) veya negatif (-Infinity
) olabilen sonsuzluğu temsil eden bir değer.
Çoğu programlama dilinin bunun yerine hata verdiği durumda sıfıra bölme işleminin sonucu olarak Infinity
ile nadiren karşılaşabilirsiniz:
10 / 0
> Infinity
JavaScript'in büyük/küçük harfe duyarlı olduğunu unutmayın. Infinity
, sonsuzluk kavramını temsil eden bir sayı veri türüdür ancak infinity
ürününün özel bir anlamı yoktur:
Infinity
> Infinity
infinity
> Uncaught ReferenceError: infinity is not defined
NaN
("Sayı Değil"), bir aritmetik işlemin sonucunun sayı olarak ifade edilemediği durumlarda daha sık gösterilir. Örneğin, JavaScript, değer ve bağlamdan veri türünü tahmin etmeye çalıştığı için, yalnızca bir sayı içeren sabit bir dize değeri, matematiksel bir işlemde kullanılabilir:
"2" * 2;
> 4
Ancak bu dize sayı değeri olarak ayrıştırılamazsa matematiksel işlem sayı dışında bir sonuç verir:
"two" * 2;
> NaN
Geçersiz değerin matematiksel bir işlemde sayı olarak temsil edildiği her durumda NaN
döndürülür. Örnekler şunları içerir:
- Başarısız dönüşüm sayısı (örneğin,
parseInt( undefined )
) - Sonucun reel sayı olmadığı aritmetik işlemler (örneğin,
0 / 0
,Math.sqrt( -10 )
) - Sonucu belirsiz bir aritmetik işlem (
0 * Infinity
) - Açık bir
NaN
(NaN + 2
) veyaNaN
sonucu (2 * "string" / 2
) içeren bir aritmetik işlem
Öğrendiklerinizi sınayın
false
, Number()
hizmetine iletildiğinde ne olur?
Aşağıdaki matematik işleminin sonucu nedir?
"Six" * 3