Numbers

Sayı değeri, herhangi bir sayısal karakter dizisinden oluşur. Örneğin:

5

Sayı veri türü, aynı zamanda Infinity ve NaN gibi sayısal kavramları temsil eder. Bu, bir değer anlamına gelir "sayı değil", matematiksel işlemleri gerçekleştirmenin olası bir sonucu hesaplamalarda bulunmanızı sağlar.

Sayı nesnesi

Number() işlevine bir değer iletildiğinde, bu değer eşdeğerdir. Örneğin, sayısal bir dize eşdeğer bir ilkel sayı:

Number( "10" );
> 10

Number() öğesine false veya null değeri iletildiğinde 0 değeri döndürülür ve true değeri döndürülür 1.

Number( null );
> 0

Number( false );
> 0

Number( true );
> 1`

Bir değer dönüştürülemiyorsa (undefined veya bir dizede olduğu gibi) değer sayısal olmayan karakterler içeriyorsa Number işlevi NaN değerini döndürür:

Number( undefined );
> NaN

Number( "The number 3." );
> NaN

Prototip devralma bölümünde açıklandığı üzere, Number nesnesini bir öğe olarak kullanmak için çok az kurucusudur. Çünkü bu, değişmez sayı değeri yerine bir Number nesnesi oluşturur.

let numObject = new Number( 15 );

numObject;
> Number { 15 }

Bu nesne, matematiksel işlemler için atanan değer olarak davranır, ancak düz sayı değerlerine karşı katı eşitlik karşılaştırmaları başarısız olur, çünkü veri türleri eşleşmez ve gerçek değer karşısında pratik bir fayda sağlamaz.

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: 64 bit IEEE 754-1985 çift duyarlıklılık kayan nokta sayıları -2^1024 ve 2^1024. JavaScript'in herhangi bir sayıyı bellekte depolamadan önce, bu sayıyı, kayan noktalı olarak da adlandırılan ikili bir kayan nokta sayısına dönüştürür.

Bu 64 bit depolama (bir pozitif veya negatif "işaret" biti, üs ve bir kesir için 52 bit), herhangi bir sayıda kesinlik hatalarına neden olabilir. izin verilen aralığa uymayan basamak sayısı. Bu sınırlama, kodunu ekleyin.

0.1 + 0.7
> 0.7999999999999999

Sayı değerleri, bunun yerine, kayan nokta sayısı olan tam sayı olarak depolanabilir. -(2^53 − 1) ile 2^53 − 1 arasında kesirsiz. Çünkü yüzer ve Tam sayılar aynı temel şekilde depolanır, aralarında pratik bir fark yoktur nasıl işlediğini açıklayacağım. Ancak, her anahtar kelime için tamsayı mümkün olan en iyi sonucu verir.

Sayı operatörleri

İlkel sayılarla standart matematiksel operatörleri kullandığınızda, matematiksel işlem sırası geçerlidir: parantez içine alınmış tüm ifadeler önce değerlendirilir ve ardından üs, çarpma, bölme, toplama ve çıkarma.

Operatör Ad Açıklama Kullanım Sonuç
+ Toplama 2+2 4
- Çıkarma 4-2 2
* Çarpım 2*5 10
/ Lig 10/5 2
++ Artış Sayıya bir ekler 2++ 3
-- Azalt Sayıdan bir çıkarır 3-- 2
** Üs İlk
yükseltme sonucunu döndürür işlenen, ikinci işlenenin kuvvetine eşittir.
2**4 16
% Kalan
ilk işlenen, ikinci işlenene bölünür.
12%5 2

Ayrıca, matematik problemi için matematiksel atama operatörlerini değişkenin değeri üzerinde işlem yapmak ve bunu hemen yeni hesaplanan değeri değişkene ekleyin.

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ğer (NaN) ve pozitif olabilen, sonsuzluğu temsil eden bir değer (Infinity) veya negatif (-Infinity).

Sıfıra bölmenin sonucu olarak Infinity ile nadiren karşılaşabilirsiniz. çoğu programlama dilinin hata verdiği komutlar:

10 / 0
> Infinity

JavaScript'in büyük/küçük harfe duyarlı olduğunu unutmayın. Infinity, bir sayı veri türüdür sonsuzluk kavramını temsil eder, ancak infinity kelimesinin özel bir anlamı yoktur:

Infinity
> Infinity

infinity
> Uncaught ReferenceError: infinity is not defined

NaN ("Sayı Değil") bir aritmetik işlem sonucunda ortaya çıkabilecek durumlarla sayı olarak ifade edilemez. Örneğin, JavaScript tahmin yapmaya çalıştığından, değer ve bağlamdan veri türünü seçerseniz, yalnızca sayı içeren bir dize matematiksel işlemde kullanılır:

"2" * 2;
> 4

Ancak o dize bir sayı değeri olarak ayrıştırılamazsa, matematiksel işlem sayı olmayan bir sayıyla sonuçlanır:

"two" * 2;
> NaN

Geçersiz değerin sayı olarak gösterildiği her durumda NaN döndürülür bir algoritma çalıştırıyor. Örnekler arasında şunlar yer alır:

  • 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) veya NaN sonucu (2 * "string" / 2)

Öğrendiklerinizi sınayın

false, Number() hizmetine iletildiğinde ne olur?

1
0
NaN
Yanlış

Aşağıdaki matematik işleminin sonucu nedir?

"Six" * 3

18
0
2
NaN
Doğru