Merhaba Webkolog Okuyucuları!
Bugün JavaScript'in en temel veri tiplerinden biri olan Sayılar (Numbers) ve bu sayıların arkasındaki güçlü Number Nesnesi hakkında konuşacağız. JavaScript'te sayılar, hem tam sayılar hem de ondalıklı sayılar için tek bir veri tipi olarak kullanılır. Ancak işin içine daha karmaşık matematiksel işlemler, sayısal sınırlar veya sayıların doğruluğunu kontrol etme gibi durumlar girdiğinde, Number nesnesinin sunduğu özellikler ve metotlar devreye girer. Hadi, sayıların bu derinliklerine bir göz atalım!
Number Nedir ve Neden Önemlidir?
JavaScript'te sayılar, çift duyarlıklı 64-bit IEEE 754 formatında saklanır. Bu, hem çok büyük hem de çok küçük sayıları temsil edebileceğimiz anlamına gelir. Temel aritmetik işlemler için sayıları doğrudan kullanırız. Ancak, Number nesnesi, bu sayısal değerler üzerinde daha gelişmiş işlemler yapmamızı sağlayan statik özellikler (sabitler) ve prototip metotları sunar.
Number nesnesini anlamak, özellikle şu durumlarda kritik öneme sahiptir:
- Sayısal değerlerin geçerliliğini kontrol etme.
- Sayıları belirli bir formatta görüntüleme (para birimi, bilimsel gösterim vb.).
- Sayısal sınırları ve özel sayısal değerleri yönetme.
Number Nesnesinin Özellikleri (Sabitler)
Number nesnesi, sayılarla çalışırken işimize yarayan bazı özel sabit değerleri barındırır:
Number.MAX_VALUE
: JavaScript'te temsil edilebilecek en büyük pozitif sayıdır (yaklaşık 1.7976931348623157e+308). Bu değeri aşan sayılarInfinity
olur.console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
Number.MIN_VALUE
: JavaScript'te temsil edilebilecek sıfıra en yakın pozitif sayıdır (yaklaşık 5e-324). Bu değerden küçük ve sıfırdan büyük sayılar, "sıfır" olarak kabul edilebilir (denormalize sayılar).console.log(Number.MIN_VALUE); // 5e-324
Number.NEGATIVE_INFINITY
: Negatif sonsuzluğu temsil eder. Bir sayıyı negatif sıfıra bölme gibi durumlarda ortaya çıkar.console.log(-1 / 0); // -Infinity (Number.NEGATIVE_INFINITY ile aynı)
Number.POSITIVE_INFINITY
: Pozitif sonsuzluğu temsil eder. Bir sayıyı sıfıra bölme gibi durumlarda ortaya çıkar.console.log(1 / 0); // Infinity (Number.POSITIVE_INFINITY ile aynı)
Number.NaN
: "Not-a-Number" (Sayı Değil) özel bir sayısal değeridir. Geçersiz veya tanımsız matematiksel işlemlerin sonucunda oluşur (örneğin, bir string'i sayıya dönüştürmeye çalışmak).console.log(0 / 0); // NaN console.log("abc" * 5); // NaN
Number.EPSILON
(ES6+): 1 ile 1'den büyük olan en küçük kayan nokta sayısı arasındaki farkı temsil eder. Kayan nokta aritmetiğindeki hassasiyet hatalarını kontrol etmek için faydalıdır.console.log(Number.EPSILON); // 2.220446049250313e-16
Number.MAX_SAFE_INTEGER
(ES6+): JavaScript'te tam sayı olarak güvenle temsil edilebilecek en büyük sayıdır (253 - 1). Bu değerden büyük tam sayılarda hassasiyet kayıpları yaşanabilir.console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991
Number.MIN_SAFE_INTEGER
(ES6+): JavaScript'te tam sayı olarak güvenle temsil edilebilecek en küçük sayıdır (-(253 - 1)).console.log(Number.MIN_SAFE_INTEGER); // -9007199254740991
Number Nesnesinin Metotları
Bu metotlar, sayısal değerler üzerinde işlem yapmak veya formatlamak için kullanılır.
1. Sayıyı String'e Dönüştürme ve Biçimlendirme
toExponential(fractionDigits)
: Bir sayıyı üstel gösterim (e-gösterimi) şeklinde bir string olarak döndürür. İsteğe bağlıfractionDigits
parametresi, ondalık noktadan sonra kaç basamak olacağını belirler.let buyukSayi = 123456789; console.log(buyukSayi.toExponential()); // 1.23456789e+8 console.log(buyukSayi.toExponential(2)); // 1.23e+8
toFixed(digits)
: Bir sayıyı, belirtilen sayıda ondalık basamağa sahip bir string olarak biçimlendirir. Yuvarlama yapar.let fiyat = 123.45678; console.log(fiyat.toFixed(2)); // "123.46" (Yuvarlama yapar) console.log(fiyat.toFixed(0)); // "123"
toPrecision(precision)
: Bir sayıyı, belirtilen toplam basamak sayısına sahip bir string olarak biçimlendirir (nokta ayracı hariç). Gerekirse üstel gösterimi kullanır.let hassasSayi = 987.654321; console.log(hassasSayi.toPrecision(4)); // "987.7" (Toplam 4 basamak) console.log(hassasSayi.toPrecision(7)); // "987.6543" (Toplam 7 basamak)
toString(radix)
: Bir sayıyı string olarak döndürür. İsteğe bağlıradix
parametresi, hangi sayı tabanında (2'lik, 10'luk, 16'lık vb.) gösterileceğini belirler.let sayi = 255; console.log(sayi.toString()); // "255" (Varsayılan 10'luk taban) console.log(sayi.toString(16)); // "ff" (16'lık taban - hexadecimal) console.log(sayi.toString(2)); // "11111111" (2'lik taban - binary)
valueOf()
: Bir Number nesnesinin ilkel sayısal değerini döndürür. Genellikle JavaScript tarafından otomatik olarak çağrılır ve manuel olarak kullanmanız nadirdir.let myNumber = new Number(10); console.log(myNumber.valueOf()); // 10 console.log(typeof myNumber.valueOf()); // number
toLocaleString(locales, options)
(ES6+): Sayıyı yerel ayar kurallarına göre biçimlendirerek bir string döndürür. Para birimi, tarih vb. formatlar için çok kullanışlıdır.let buyukPara = 1234567.89; console.log(buyukPara.toLocaleString('tr-TR', { style: 'currency', currency: 'TRY' })); // 1.234.567,89 TL console.log(buyukPara.toLocaleString('en-US', { style: 'currency', currency: 'USD' })); // $1,234,567.89
2. Sayısal Değer Kontrol Metotları (Statik)
Bu metotlar doğrudan Number
nesnesi üzerinden çağrılır ve bir değerin sayısal niteliklerini kontrol eder.
Number.isInteger(value)
(ES6+): Verilen değerin bir tam sayı olup olmadığını kontrol eder (true
/false
).console.log(Number.isInteger(10)); // true console.log(Number.isInteger(10.0)); // true console.log(Number.isInteger(10.5)); // false console.log(Number.isInteger("10")); // false (string)
Number.isFinite(value)
(ES6+): Verilen değerin sonlu bir sayı olup olmadığını kontrol eder (yaniInfinity
,-Infinity
veyaNaN
değilsetrue
). GlobalisFinite()
'den farkı, argümanı sayıya dönüştürmeye çalışmamasıdır.console.log(Number.isFinite(10)); // true console.log(Number.isFinite(Infinity)); // false console.log(Number.isFinite("10")); // false (string olduğu için)
Number.isNaN(value)
(ES6+): Verilen değerinNaN
olup olmadığını kontrol eder. GlobalisNaN()
'den farkı, argümanı sayıya dönüştürmeye çalışmamasıdır. Yalnızca doğrudanNaN
olan değerler içintrue
döner.console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN(123)); // false console.log(Number.isNaN("Merhaba")); // false ("Merhaba" direkt NaN değil, NaN'a dönüşür) console.log(Number.isNaN("10")); // false
Number.parseFloat(string)
(ES6+): String'i bir ondalıklı sayıya dönüştürür. GlobalparseFloat()
ile aynıdır.console.log(Number.parseFloat("3.14")); // 3.14 console.log(Number.parseFloat("3.14 elma")); // 3.14
Number.parseInt(string, radix)
(ES6+): String'i bir tam sayıya dönüştürür. GlobalparseInt()
ile aynıdır.console.log(Number.parseInt("100px")); // 100 console.log(Number.parseInt("101", 2)); // 5
Sonuç
JavaScript'te sayılarla çalışmak ilk bakışta basit gibi görünse de, Number nesnesi ve sunduğu özellikler/metotlar, sayısal veriler üzerinde daha kontrollü ve esnek işlemler yapmamızı sağlar. Özellikle finansal uygulamalar, bilimsel hesaplamalar veya kullanıcı girdilerinin doğrulanması gibi alanlarda bu bilgileri bilmek size büyük avantaj sağlayacaktır. Sayısal sınırları, biçimlendirme seçeneklerini ve değer kontrol metotlarını anlamak, daha sağlam ve hatasız kodlar yazmanıza yardımcı olur.
Unutmayın, her zaman mümkün olduğunca ilkel sayısal değerleri kullanmaya çalışın ve Number nesnesini ancak özel ihtiyaçlarınız olduğunda (biçimlendirme, doğrulama gibi) çağırın. Pratik yaparak bu metotlara hakim olun!
Webkolog'u takipte kalın!
Hepinize bol kodlu ve başarılı projeler dilerim!
0 yorum:
Yorum Gönder