JavaScript Sayısal İşlemler

JavaScript sayı, number veri türü, sayı sistemi, sayı yuvarlama, sayı kontrolü, en küçük – en büyük sayıyı bulma, matematik fonksiyonları gibi sayısal işlemler yer alıyor.

JavaScript sayıları ifade etmek için veri türü olarak sayı (number) kullanılır.

number veri türü

JavaScript number veri türünde sayılar ondalıklı veya ondalıksız olarak yazılabilir.

var x = 1453;   // Ondalıksız yazım
var y = 14.53;  // Ondalıklı yazım

Büyük ve küçük sayılar bilimsel veya üstsel gösterimle yazılabilir.

<script>
  var x = 1453e5;   // 145300000
  var y = 1453e-5;  // 0.01453
  alert(y);
</script>

Sayı sınırı

JavaScript number veri türünde 15 haneli ondalıksız sayı yazılabilir.

<script>
  var x = 999999999999999;   // 999999999999999
  var y = 9999999999999999;  // 10000000000000000
  alert(y);
</script>

JavaScript number veri türünde 17 haneli ondalıklı sayı yazılabilir.

Ancak kayan nokta aritmetiği 100% doğru değildir.

<script>
  var x = 0.2 + 0.1;   // 0.30000000000000004
  alert(x);
</script>

Bu sorunu çözmek için aşağıdaki yöntem kullanılabilir.

<script>
  var x = (0.2 * 10  + 0.1 * 10) / 10;   // 0.3
  alert(x);
</script>

Sayı sistemleri

JavaScript sayı değeri 0x ile başlıyorsa sayıyı onaltılık sayı sistemi olarak tanımlar.

<script>
  var x = 0xFF;   // 255
  alert(x);
</script>

NOT: JavaScript sayı değerinin önüne 0 eklenirse bazı JavaScript sürümleri sayıyı sekizlik sayı sistemi olarak tanımlayacaktır.

JavaScript sayıları varsayılan olarak onluk sayı sistemi olarak tanımlar.

Sayıları onaltılık, sekizlik ve ikilik sayı sistemine dönüştürmek için toString fonksiyonu kullanılır.

<script>
  var x = 1453;
  alert(x.toString(16)); // 5ad
  alert(x.toString(8));  // 2655
  alert(x.toString(2));  // 10110101101
</script>

Infinity

JavaScript ile sonsuzluk-sınır değerini ifade etmek için Infinity veya -Infinity anahtar kelimesi kullanılır.

Aşağıdaki örnek JavaScript ile yazılabilen sayı sınır değerine kadar çarpma işlemi yapacaktır.

<script>
  var x = 2;
  while(x != Infinity) {
    x = x * x;
    alert(x);
  }
</script>

Bir sayının 0’a bölünmesi Infinity veya –Infinity değeri döndürür.

<script>
  var x = 10 / 0;   // Infinity
  var y = -10 / 0;  // -Infinity
  alert(x);
  alert(y);
</script>

JavaScript Infinity anahtar kelimesinin veri türü number’dır.

<script>
  alert(typeof Infinity);
</script>

NaN – Not a Number

JavaScript ile bir değişkenin sayı olup olmadığını NaN anahtar kelimesiyle öğrenebiliriz.

Sayısal bir değer sayısal olmayan bir değerle işlem yapılırsa JavaScript NaN sonucunu verir.

<script>
  alert(100 / "Yusuf");
</script>

Metin veri türü içindeki değer sayı olursa sonuç sayı değeri olacaktır.

<script>
  alert(100 / "10");
</script>

Değişkenin sayı olup olmadığını bulmak için isNaN fonksiyonu kullanılır.

Örnekte sonuç bir sayı olmadığından dolayı true-doğru sonucunu verir.

<script>
  var x = 100 / "Yusuf";
  alert(isNaN(x));
</script>

JavaScript NaN anahtar kelimesini veri türü number’dır.

<script>
  alert(typeof NaN);
</script>

JavaScript sayı fonksiyonları, sayılar üzerinde işlem yapmamızı sağlar.

Sayısal fonksiyonlar ve özellikler

Temel veri türleri (3.14 veya 1453 gibi) sayısal fonksiyon ve özelliklere sahip değildir.

Ancak JavaScript sayısal fonksiyon ve özellikleri temel veri türleri içinde kullanabilmemizi sağlar.

toString

toString fonksiyonu sayıyı metin veri türüne çevirir.

JavaScript içindeki tüm sayısal değerler (sabit değerler, değişken değerler ve işlemler) için kullanılabilir.

<script>
  var xSayisi = 1453;
  alert(xSayisi.toString());
  alert((1453).toString());
  alert((1400 + 53).toString());
</script>

toExponential

toExponential fonksiyonu sayının virgülden sonraki rakam sayısını belirtmek ve bilimsel olarak yazmak için kullanılır.

<script>
  var xSayisi = 14.53;
  alert(xSayisi.toExponential(2));
  alert(xSayisi.toExponential(4));
  alert(xSayisi.toExponential(6));
</script>

toFixed

toFixed fonksiyonu virgülden sonraki rakam sayısını belirtmek için kullanılır.

<script>
  var xSayisi = 14.53;
  alert(xSayisi.toFixed(0));
  alert(xSayisi.toFixed(2));
  alert(xSayisi.toFixed(4));
  alert(xSayisi.toFixed(6));
</script>

toPrecision

toPrecision rakam sayısını belirtmek için kullanılır.

<script>
  var xSayisi = 14.53;
  alert(xSayisi.toPrecision());
  alert(xSayisi.toPrecision(2));
  alert(xSayisi.toPrecision(4));
  alert(xSayisi.toPrecision(6));
</script>

Değişkenleri sayıya çevirme

Sayısal olmayan değerleri sayıya çevirmek için 3 fonksiyon kullanılır.

  • Number() fonksiyonu
  • parseInt() fonksiyonu
  • parseFloat() fonksiyonu

Bu fonksiyonlar genel JavaScript fonksiyonlarıdır.

Number

Number fonksiyonu aldığı değeri sayı türüne çevirmek için kullanılır.

<script>
  var xSayisi = "14.53";
  alert(Number(xSayisi));
  alert(Number(true));
  alert(Number(false));
  alert(Number(new Date()));
  alert(Number("  10"));
  alert(Number("10  "));
  alert(Number("10 20"));
</script>

Number fonksiyonu tarih değerini 1.1.1970’den başlayarak milisaniye olarak verir.

parseInt

parseInt fonksiyonu aldığı değeri sayı türüne çevirmek için kullanılır.

Sayılar arasında boşluk varsa ilk sayıyı verir.

<script>
  alert(parseInt("10"));
  alert(parseInt("14.53"));
  alert(parseInt("10 20 30"));
  alert(parseInt("10 sene"));
  alert(parseInt("sene 10"));
</script>

Aldığı değeri sayı türüne çeviremezse NaN değerini verir.

parseFloat

parseFloat fonksiyonu aldığı değeri sayı türüne çevirmek için kullanılır.

Sayılar arasında boşluk varsa ilk sayıyı verir.

<script>
  alert(parseFloat("10"));
  alert(parseFloat("14.53"));
  alert(parseFloat("10 20 30"));
  alert(parseFloat("10 sene"));
  alert(parseFloat("sene 10"));
</script>

Aldığı değeri sayı türüne çeviremezse NaN değerini verir.

Number veri türü özellikleri

Özellik Açıklması
MAX_VALUE JavaScript ile kullanılabilen en büyük sayıyı verir.
MIN_VALUE JavaScript ile kullanılabilen en büyük sayıyı verir.
NEGATIVE_INFINITY JavaScript negatif sınır taşmasını temsil eder.
NaN JavaScript sayı olmadığını belirten anahtar kelimeyi temsil eder
POSITIVE_INFINITY JavaScript pozitif sınır taşmasını temsil eder.

Kullanımı;

<script>
  alert(Number.MAX_VALUE);
</script>

Özellikler sadece Number ön eki ile kullanılır.

Aşağıdaki kullanım tanımsız (undefined) değerini verecektir.

<script>
  var x = 1453;
  alert(x.MAX_VALUE);
</script>

JavaScript Matematik Fonksiyonları

JavaScript matematik fonksiyonları sayılar üzerinde matematiksel işlem yapmamızı sağlar.

<script>
  alert(Math.PI); // 3.141592653589793
</script>

Math.round

Math.round fonksiyonu parametre olarak verilen ondalıklı sayıya en yakında tam sayıyı değerini verir.

<script>
  alert(Math.round(4.7)); // 5
  alert(Math.round(4.4)); // 4
</script>

Math.pow()

Math.pow(x, y) fonksiyonu x değerini y değeri kadar çarpar.

<script>
  alert(Math.pow(4, 2)); // 16
</script>

Math.sqrt()

Math.sqrt fonksiyonu parametre olarak verilen sayının karekökünü verir.

<script>
  alert(Math.sqrt(144)); // 12
</script>

Math.abs()

Math.abs fonksiyonu parametre olarak verilen sayının mutlak değerini verir.

<script>
  alert(Math.abs(-5.44)); // 5.44
</script>

Math.ceil()

Math.ceil fonksiyonu parametre olarak verilen ondalıklı sayıyı yukarı yuvarlar.

<script>
  alert(Math.ceil(4.1)); // 5
</script>

Math.floor()

Math.floor fonksiyonu parametre olarak verilen ondalıklı sayıyı aşağı yuvarlar.

<script>
  alert(Math.floor(4.9)); // 4
</script>

Math.min()

Math.min fonksiyonu parametre olarak verilen sayılar arasında en küçük sayıyı verir.

<script>
  alert(Math.min(0, 30, 359, 100, -1, -100)); // -100
</script>

Math.max()

Math.max fonksiyonu parametre olarak verilen sayılar arasında en büyük sayıyı verir.

<script>
  alert(Math.max(0, 30, 359, 100, -1, -100)); // 359
</script>

Math.random()

Math.random fonksiyonu 0 ile 1 arasında rastgele sayı üretir.

<script>
  alert(Math.random());
</script>

JavaScript Math özellikleri

Math sınıfı matematiksel işlemler için çeşitli sabitlerine sahiptir.

<script>
  alert(Math.E);
  alert(Math.PI);
  alert(Math.SQRT2);
  alert(Math.SQRT1_2);
  alert(Math.LN2);
  alert(Math.LN10);
  alert(Math.LOG2E);
  alert(Math.LOG10E);
</script>

JavaScript Derslerine buradan ulaşabilirsiniz…

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!