Number Properties (Bildiklerini Unutturacak Rehber 🚀)
“JavaScript’te sayı basittir” diyen birini duyarsan, muhtemelen henüz
NaNile yalnız kalmamıştır…
JavaScript’te sayılar tek bir tipe (number) ait gibi görünür.
Ama bu tek tipin arkasında limitler, tuzaklar, güvenli alanlar ve matematiksel dramalar vardır.
İşte bu yazı, o dramaları komediye çeviren yazıdır 🎭
Önce Şunu Netleştirelim 🎯
let age = 25;
Bu 25 bir primitive number’dır.
Ama Number, JavaScript’in sayılar için tuttuğu anayasa kitabıdır 📘
Ve biz şimdi o kitabın en kritik maddelerine giriyoruz.
1️⃣ Number.MAX_VALUE
“JavaScript’in kaldırabileceği en büyük sayı”
console.log(Number.MAX_VALUE);
// 1.7976931348623157e+308
Bu sayı şunu temsil eder:
“Ben buraya kadar çalışırım, sonrası bende yok.”
Peki aşarsak ne olur?
let result = Number.MAX_VALUE * 2;
console.log(result);
// Infinity
💥 Boom! Sayı sonsuzluğa uçtu.
Neden Önemli?
- Büyük finans hesapları
- Bilimsel hesaplamalar
- API’den gelen dev sayılar
Pratik İpucu 💡
if (value > Number.MAX_VALUE) {
console.log("Bu sayı JavaScript için fazla büyük!");
}
2️⃣ Number.MIN_VALUE
“Sıfıra en yakın ama sıfır olmayan pozitif sayı”
console.log(Number.MIN_VALUE);
// 5e-324
⚠️ Çok yapılan hata:
“Bu en küçük negatif sayı”
❌ Hayır
✅ Bu 0’a en yakın pozitif sayıdır.
Örnek
let tiny = Number.MIN_VALUE / 2;
console.log(tiny);
// 0
JavaScript diyor ki:
“Bunu artık sıfır sayıyorum, kusura bakma.”
Nerede İşe Yarar?
- Hassas ölçümler
- Bilimsel hesaplamalar
- Float sınırlarını test etmek
3️⃣ Infinity, POSITIVE_INFINITY, NEGATIVE_INFINITY
“Sayıların uzaya çıkması”
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity
Nasıl oluşur?
console.log(1 / 0); // Infinity
console.log(-1 / 0); // -Infinity
JavaScript burada hata vermez, sadece:
“Tamam, bu artık sonsuz.”
Kontrol Etme Yolu
if (value === Infinity) {
console.log("Sonsuzluğa ulaştık 🚀");
}
Pratik Kullanım
- Matematiksel limitler
- “Bu hesap kontrolden çıktı mı?” sorusu
- Grafik ve animasyon hesapları
4️⃣ Number.NaN
“Bu sayı değil ama JavaScript pes etmiyor”
let result = 10 / "muz";
console.log(result);
// NaN
NaN = Not a Number
Ama işin eğlenceli kısmı şimdi başlıyor 👇
En Büyük Tuzak 😈
NaN === NaN // false
Evet…NaN, kendisiyle bile eşit değil.
DOĞRU KONTROL YÖNTEMİ ✅
Number.isNaN(result); // true
Yanlış Yöntem ❌
isNaN("123"); // false ama kafa karıştırıcı
Pratik İpucu 💡
Number.isNaN()kullan, hayatın kolaylaşsın.
5️⃣ Number.EPSILON
“Ondalıklı sayıların arabulucusu”
Şu sahneye aşinayız:
0.1 + 0.2 === 0.3
// false 😤
Sebep:
JavaScript ondalıkları ikili sistemle saklar.
İşte çözüm 👇
function isEqual(a, b) {
return Math.abs(a - b) < Number.EPSILON;
}
isEqual(0.1 + 0.2, 0.3); // true 🎉
Ne Yaptık?
- İki sayı arasındaki farkı aldık
- O fark EPSILON’dan küçükse “eşit” dedik
Nerede Hayati?
- Para hesapları
- Ölçüm sistemleri
- Grafik animasyonları
6️⃣ Number.MAX_SAFE_INTEGER
“JavaScript’in güvenle sayabildiği son tam sayı”
console.log(Number.MAX_SAFE_INTEGER);
// 9007199254740991
Tehlike Bölgesi 🚨
let x = 9007199254740992;
console.log(x + 1 === x);
// true 😱
JavaScript burada saymayı şaşırıyor.
Neden?
Çünkü bu noktadan sonra precision kayboluyor.
Çözüm 🛠️
let big = 9007199254740992n;
console.log(big + 1n);
// 9007199254740993n
👉 BigInt kurtarıcı olarak geliyor.
7️⃣ Number.MIN_SAFE_INTEGER
“Negatif taraftaki güvenli sınır”
console.log(Number.MIN_SAFE_INTEGER);
// -9007199254740991
Aynı kurallar burada da geçerli.
Pratik Kontrol
function isSafe(num) {
return Number.isSafeInteger(num);
}
isSafe(123); // true
isSafe(9007199254740992); // false
Gerçek Hayattan Mini Senaryo 🎬
let price = 0.1 + 0.2;
if (Math.abs(price - 0.3) < Number.EPSILON) {
console.log("Fiyat doğru 💸");
}
👉 Finans uygulaması yazıyorsan bu kod hayat kurtarır.
Kaydetmelik Süper Özet 📌
- Büyük sayılar =
MAX_VALUE - Güvenli tam sayılar =
MAX_SAFE_INTEGER - Ondalıklı savaşlar =
EPSILON - Saçma sonuçlar =
NaN - Sonsuzluk =
Infinity
Son Söz ☕
JavaScript’te sayı kullanmak kolaydır.
Doğru sayı kullanmak ise bilgi ister.
Bu yazıyı okuduktan sonra:
- “Bu neden böyle oldu?” demeyeceksin
NaNseni korkutamayacak- Ondalıklı sayılarla barış imzalayacaksın ✌️
