Số nguyên lớn trong Javascript - JavaScript BigInt

  • Như

    Tác giả

    Như

  • Ngày đăng

    29 thg 11, 2023

  • Số lượt xem

    109 lượt xem


Tìm hiểu về kiểu dữ liệu BigInt để xử lý các số nguyên lớn với độ chính xác cao hơn so với kiểu dữ liệu số thông thường.

Trong JavaScript, BigInt được sử dụng để lưu trữ các giá trị số nguyên lớn quá lớn để được biểu diễn bằng kiểu số thông thường.

bigint

Độ Chính Xác Của Số Nguyên Trong JavaScript

Số nguyên trong JavaScript chỉ chính xác đến 15 chữ số:

let x = 999999999999999; // Đúng
let y = 9999999999999999; // Sai

 

Tất cả các số trong JavaScript đều được lưu trữ theo định dạng số thực 64-bit (tiêu chuẩn IEEE 754). Đối với tiêu chuẩn này, số nguyên lớn không thể được biểu diễn chính xác và sẽ bị làm tròn.

JavaScript chỉ có thể biểu diễn số nguyên an toàn:

  • Lên đến 9007199254740991 (2^(53-1))
  • Xuống đến -9007199254740991 (-(2^(53-1)))

Các giá trị số nguyên nằm ngoài phạm vi này sẽ mất độ chính xác.

Cách Tạo BigInt

Để tạo một BigInt, bạn có thể thêm n vào cuối số nguyên hoặc sử dụng hàm BigInt():

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

BigInt là một kiểu dữ liệu số thứ hai trong JavaScript (sau Number). Với BigInt, tổng số kiểu dữ liệu được hỗ trợ trong JavaScript là 8:

  • String
  • Number
  • Bigint
  • Boolean
  • Undefined
  • Null
  • Symbol
  • Object

Toán Tử BigInt

Các toán tử có thể được sử dụng trên một số JavaScript cũng có thể được sử dụng trên một BigInt.

Ví dụ về nhân BigInt:

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

 

Lưu ý rằng phép toán giữa BigInt và một số không được phép (chuyển đổi kiểu sẽ mất thông tin).

Không thể sử dụng dịch phải không dấu (>>>) trên BigInt (vì nó không có chiều rộng cố định).

Định Dạng Hex, Octal và Binary của BigInt

BigInt cũng có thể được viết theo cách thức thập lục phân, bát phân hoặc nhị phân:

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

 

Hỗ Trợ Trình Duyệt và Giới Hạn An Toàn Tối Thiểu và Tối Đa

BigInt được hỗ trợ trên tất cả các trình duyệt kể từ tháng 9 năm 2020.

Giới hạn an toàn tối đa và tối thiểu đã được thêm vào ES6:

  • Number.MAX_SAFE_INTEGER: Giá trị an toàn tối đa
  • Number.MIN_SAFE_INTEGER: Giá trị an toàn tối thiểu

Phương Thức Mới của Number

ES6 đã thêm 2 phương thức mới vào đối tượng Number:

  • Number.isInteger(): Kiểm tra xem một số có phải là số nguyên không.
  • Number.isSafeInteger(): Kiểm tra xem một số có phải là số nguyên an toàn không.

Ví dụ về sử dụng:

Number.isInteger(10); // true
Number.isInteger(10.5); // false

 

Number.isSafeInteger(10); // true
Number.isSafeInteger(12345678901234567890); // false

 

Số nguyên an toàn là số nguyên có thể được biểu diễn chính xác dưới dạng số thực độ chính xác kép.

Tổng Kết

Như vậy, BigInt mang lại tính linh hoạt và độ chính xác cao cho việc xử lý số nguyên lớn trong JavaScript. Đặc biệt, nó là một công cụ mạnh mẽ khi bạn cần làm việc với các số nguyên vượt quá giới hạn chính xác của kiểu dữ liệu số thông thường.


Tổng số đánh giá: 0

Xếp hạng: 5 / 5 sao

Liên Kết Chia Sẻ

Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.