Number - Sayı
Javascript sayıları 64-Bit uzunluğunda 'Çift Duyarlı Kayan Nokta' olarak IEEE-754 standartlarında tutar. IEEE-754 standardından daha büyük sayılar kullanılırsa hata vermez, 'sonsuz' olarak değerlenir.
Bir sayısal büyüklük tırnak içerisine alınmadan doğrudan yazılırsa number
tipinde olur. Bu şekilde matematiksel işlemlerde (toplama, çıkarma vb.) kullanılabilirler. Tırnak içerisinde yazılırsa string
olur ve matematiksel işlemlerde kullanılamazlar. Örnek.
let tamSayi = 2023;
let ondalikliSayi = 20.23;
Javascript tamsayılar ve ondalıklı sayılar için number değişkenini kullanır. Farklı tipler olarak ele almaz. Number
veri tipi güvenli olarak ile arasında değerler alabilir. Daha büyük veya küçük değerler de alabilir fakat karşılaştırmalarda yanlış sonuçlar üretir. Örneğin ile birbirlerine eşit mi sorusuna doğru cevabını alırsınız. Değer aralıklarını .MAX_VALUE
ve .MIN_VALUE
özellikleri ile görüntüleyin.
.MAX_VALUE
|.MIN_VALUE
|.MAX_SAFE_INTEGER
|.MIN_SAFE_INTEGER
alert('Number max değeri: ' + Number.MAX_VALUE);
alert('Number min değeri: ' + Number.MIN_VALUE);
Güvenli tamsayı değer aralıklarını .MAX_SAFE_INTEGER
ve .MIN_SAFE_INTEGER
özellikleri ile görüntüleyin.
alert(Number.MAX_SAFE_INTEGER); // 9007199254740991
alert(Number.MIN_SAFE_INTEGER); // -9007199254740991
Javascript HexaDecimal (16'lı), Octal (8'li) ve Binary (2'li) sayı sistemlerini kabul eder.
HexaDecimal - 16'lı Sayı Sistemi
Sayılar 0-9 arasındaki rakamlar ve A-F arasındaki harflerle temsil edilir.
0-9 arası rakamlar kendileri olarak, 10:A, 11:B, 12:C, 13:D, 14:E, 15:F olarak temsil edilir.
HexaDecimal sayılar '0x' ile başlayarak yazılır. Örnek: 0xFF
HTML Renk kodları bu sistemi kullanır ve gösterimi hashtag sembolü ile başlar. Örnek: #FFFFF
Octal - 8'li Sayı Sistemi
Sayılar 0-7 arasındaki rakamlarla temsil edilir.
Octal sayılar '0o' ile başlayarak yazılır. Örnek: 0o377
Binary - 2'li Sayı Sistemi
Sayılar 0 ve 1 ile temsil edilir.
Binary sayılar '0b' ile başlayarak yazılır. Örnek: 0b11111111
Javascript'te çok sıfırlı sayıları yazarken 'e' harfi kullanılabilir. Örnek olarak:
let nBin = 3e+3; // Üç Bin sayısı e'nin sağında 3 rakamı 3 sıfır anlamına gelir.
let nMilyon = 5e+6; //5 Milyon
let nMilyar = 9.45e+10; //94 Milyar 500 Milyon
let ondaN = 1e-1; //Sağdaki sayı negatif olursa ondalıklara geçer: Onda 1
let milyondaN = 1e-6; //Milyonda 1
let milyardaN = 4.56e-7; // Milyarda 456
Number
tipinde iki tane özel değer vardır. Bunlar Infinity ve NaN'dır.
Infinity Değeri
Sonsuz sayıları temsil eder. En büyük sayıdır. Javascript'in standardından daha büyük bir sayı yazarsanız veya bir sayıyı sıfıra bölerseniz Infinity
değerini elde edersiniz. Hata almazsınız. Örnek.
let sayi1 = 1/0; // Sıfıra böldük: Infinity
let sayi2 = 1e309; // Max değeri aştık: Infinity
alert(sayi1);
alert(sayi2);
Infinity
değeri bir veri tipi değildir. Number
veri tipinin özel bir değeridir. Şunları deneyip sonucu görünüz.
let sonsuz = Infinity;
alert(25/sonsuz); // Sonuç: 0
alert(sonsuz/sonsuz); // Sonuç: NaN
alert(sonsuz-sonsuz); // Sonuç: Infinity
alert(sonsuz+sonsuz); // Sonuç: Infinity
alert(sonsuz*sonsuz); // Sonuç: Infinity
NaN Değeri (Not a Number)
Matematiksel işlemi hatalı olan değişkenlerin değeridir. Örneğin bir harf rakama bölünemez. Bu durumda değeri NaN
olur. Örnek.
let sayi1 = 'Karakter Dizisi' / 'Başka bir Karakter Dizisi';
alert(sayi1); // NaN
let sayi2 = 'Karakter Dizisi' - 15;
alert(sayi2); // NaN
let sayi3 = 'Karakter Dizisi' * 3;
alert(sayi3); // NaN
Bazı NaN
değeri üreten işlemler. Deneyiniz.
let sonsuz = Infinity;
let sifir = 0;
alert(sonsuz/sonsuz); // NaN
alert(sifir/sifir); //NaN
alert(sonsuz*sifir); //NaN
IEEE-754 Sayı Hataları
Birçok dilde kullanılan IEEE-754 standardı sayıları bellekte binary olarak tutar. Bunun sonucunda bazı yuvarlamaları otomatik olarak yapar ve hatalı sonuç döndürür. Örnek.
let sayi1 = 0.1;
let sayi2 = 0.2;
alert(sayi1+sayi2); // Sonuç: 0.30000000000000004
IEEE-754 standardı ondalık kısmı en fazla 16 basamağa kadar doğru verir. Ondalığın 17. basamağında yukarı doğru yuvarlamalar yapar. IEEE-754 varsayılan olarak 1 işaret digit'i, 52 tamsayı basamak digit'i ve 11 ondalık basamak digit'i tutar. Dolayısıyla binary olarak 52 basamaktan daha fazla olan bir tamsayı yazarsanız bunda da belirli bir düzende yukarı doğru yuvarlamalar yapar.
Aşağıda büyük bir tamsayının 2'lik tabandaki binary karşılığı verilmiştir. Sayı binary olarak 54 digit'tir. Yani 54 basamak uzunluğundadır.
let sayi = 9999999999999999;
alert(sayi); // Çıktı: 10000000000000000 sayısıdr.
Bu standardın 1 digit'i işaret olarak tuttuğunu ifade etmiştik. Bu durum sıfır (0) sayısı için de geçerlidir. Yani sıfır -0 ve +0 olarak iki sayı vardır. Sıfır sayısı iki türlü de binary olarak tamamen sıfırlardan oluştuğu için bu durum bir hataya sebep olmaz. Fakat -0 ve +0 standart olarak kullanılabilir. Aynı durum Infinity
için de geçerlidir. Yani -Infinity
ve +Infinity
olarak kullanılabilir.
Last updated