JavaScript BigInt

JavaScript BigInt değişkenleri, normal JavaScript sayılarıyla temsil edilemeyen büyük tam sayı değerlerini saklamak için kullanılır.

JavaScript tam sayı doğruluğu

JavaScript tam sayıları en fazla 15 basamak doğru olarak temsil edebilir:

Tam sayı doğruluğu

let x = 999999999999999;
let y = 9999999999999999;

Kişisel olarak deneyin

JavaScript'te tüm sayılar 64 bitlik kayan nokta formatında (IEEE 754 standardı) saklanır.

Bu standarta göre, büyük tam sayılar doğru olarak temsil edilemez ve yuvarlanır.

Bu nedenle, JavaScript sadece aşağıdaki aralık içindeki tam sayıları güvenle temsil edebilir:

  • en büyük 9007199254740991(253-1)
  • en küçük -9007199254740991(-(253-1))

Bu aralık dışındaki tam sayı değerleri, doğruyu kaybeder.

BigInt nasıl oluşturulur

BigInt oluşturmak için, tam sayıların sonuna nveya çağrılabilir BigInt() Fonksiyon:

Örnek 1

let x = 9999999999999999;
let y = 9999999999999999n;

Kişisel olarak deneyin

Örnek 2

let x = 1234567890123456789012345n;
let y = BigInt(1234567890123456789012345);

Kişisel olarak deneyin

BigInt: Yeni bir JavaScript veri türü

BigInt'in JavaScript türü "bigint

Örnek

let x = BigInt(999999999999999);
let type = typeof x;

Kişisel olarak deneyin

BigInt, Number'dan sonra JavaScript'teki ikinci sayısal veri türüdür.

BigInt için, JavaScript'te desteklenen veri türleri toplamı 8 türdür:

  1. String
  2. Number
  3. Bigint
  4. Boolean
  5. Undefined
  6. Null
  7. Symbol
  8. Object

BigInt işlevsel işlevleri

JavaScript Number işlevsel işlevleri BigInt için de kullanılabilir.

BigInt çarpanlık örneği

let x = 9007199254740995n;
let y = 9007199254740995n;
let z = x * y;

Kişisel olarak deneyin

Dikkat

BigInt ve Number arasında aritmetik işlemler (tip dönüşümü bilgi kaybına neden olabilir).

BigInt sabit genişliğe sahip olmadığı için sağa doğru tamsayı kaydırma işlemi (>>>) yapamaz.

BigInt ondalıklı

BigInt ondalıklı olamaz.

BigInt bölme örneği

let x = 5n;
let y = x / 2;
// Hata: BigInt ve diğer türler karıştırılamaz, açık dönüşüm kullanın.
let x = 5n;
let y = Number(x) / 2;

Kişisel olarak deneyin

BigInt onaltılık, otobase ve ikili

BigInt onaltılık, otobase veya ikili temsilatla yazılabilir:

BigInt onaltılık örnek

let hex = 0x20000000000003n;
let oct = 0o400000000000000003n;
let bin = 0b100000000000000000000000000000000000000000000000000011n;

Kişisel olarak deneyin

Precision Curiosity

Yaklaştırma program güvenliğini tehlikeye atabilir:

MAX_SAFE_INTEGER örnek

9007199254740992 === 9007199254740993; // Doğru !!!

Kişisel olarak deneyin

Tarayıcı desteği

2020 yılının Eylül ayından beri tüm tarayıcılar BigInt'i destekliyor:

Chrome Edge Firefox Safari Opera
Chrome 67 Edge 79 Firefox 68 Safari 14 Opera 54
2018 yılının Mayıs ayı 2020 yılının Ocak ayı 2019 yılının Temmuz ayı 2020 yılının Eylül ayı 2018 yılının Haziran ayı

En küçük ve en büyük güvenli tam sayılar

ES6 Number nesnesine max ve min özelliklerini ekledi:

  • MAX_SAFE_INTEGER
  • MIN_SAFE_INTEGER

MAX_SAFE_INTEGER örnek

let x = Number.MAX_SAFE_INTEGER;

Kişisel olarak deneyin

MIN_SAFE_INTEGER örnek

let x = Number.MIN_SAFE_INTEGER;

Kişisel olarak deneyin

Yeni sayı yöntemleri

ES6 Number nesnesine iki yeni yöntem ekledi:

  • Number.isInteger()
  • Number.isSafeInteger()

Number.isInteger() yöntemi

Parametre bir tamsayıysa, Number.isInteger() yöntemi true.

isInteger() örneği

Number.isInteger(10);
Number.isInteger(10.5);

Kişisel olarak deneyin

Number.isSafeInteger() yöntemi

Güvenli tamsayılar, tam olarak iki katlı sayı olarak temsil edilebilen tamsayılardır.

Parametre güvenli bir tamsayıysa, Number.isSafeInteger() yöntemi true.

isSafeInteger() örneği

Number.isSafeInteger(10);
Number.isSafeInteger(12345678901234567890);

Kişisel olarak deneyin

Güvenli tamsayılar -(253 - 1) ile +(253 - 1) Tüm tamsayılar.

Bu bir güvenli tamsayıdır: 9007199254740991. Bu bir güvenli tamsayı değildir: 9007199254740992.