Cách sử dụng số lớn BigInt và JavaScript
Javascript căn bản | by
Trong JavaScript, kiểu dữ liệu Number
thường được sử dụng để xử lý các giá trị số. Tuy nhiên, kiểu dữ liệu này có một giới hạn quan trọng: nó chỉ có thể biểu diễn chính xác các số nguyên trong phạm vi ±(2⁵³ - 1) (tức là khoảng ±9,007,199,254,740,991). Khi làm việc với những số lớn hơn, JavaScript có thể làm tròn hoặc mất đi độ chính xác, dẫn đến lỗi tính toán.
Để khắc phục hạn chế này, JavaScript đã giới thiệu BigInt – một kiểu dữ liệu mới cho phép lưu trữ và xử lý các số nguyên có kích thước rất lớn mà không bị giới hạn bởi phạm vi của Number
. BigInt giúp đảm bảo độ chính xác khi làm việc với các số lớn, đặc biệt trong các lĩnh vực như mã hóa, tài chính, và xử lý dữ liệu lớn.
Vậy, BigInt hoạt động như thế nào? Cách khai báo và sử dụng nó ra sao? Chúng ta hãy cùng tìm hiểu chi tiết trong bài viết này.
BigInt trong JavaScript là gì?
BigInt là một kiểu dữ liệu mới trong JavaScript được giới thiệu từ ES11 (ECMAScript 2020). Nó cho phép lưu trữ và thực hiện các phép toán với các số nguyên cực lớn mà không bị mất độ chính xác.
Trước đây, kiểu Number
trong JavaScript chỉ có thể biểu diễn chính xác các số nguyên trong khoảng -(2⁵³ - 1) đến (2⁵³ - 1) (tức khoảng ±9,007,199,254,740,991). Nếu vượt quá phạm vi này, JavaScript có thể làm tròn hoặc mất độ chính xác. BigInt giúp giải quyết vấn đề này bằng cách lưu trữ số nguyên dưới dạng một kiểu dữ liệu đặc biệt.
Cách khai báo BigInt
Có hai cách để tạo một giá trị BigInt trong JavaScript:
Cách 1: Sử dụng hậu tố n
Khi khai báo một số nguyên với hậu tố n
, JavaScript sẽ tự động hiểu đó là kiểu BigInt.
let bigNumber = 123456789012345678901234567890n; console.log(bigNumber); console.log(typeof bigNumber); // "bigint"
Ở đây, số 123456789012345678901234567890
vượt quá phạm vi của kiểu Number
, nhưng nhờ n
, nó được lưu trữ chính xác dưới dạng BigInt
.
Cách 2: Sử dụng hàm BigInt()
Có thể sử dụng hàm BigInt()
để chuyển đổi một số hoặc chuỗi thành BigInt.
let fromNumber = BigInt(1234567890123456789); let fromString = BigInt("987654321098765432109876543210"); console.log(fromNumber); // 1234567890123456789n console.log(fromString); // 987654321098765432109876543210n
Lưu ý:
BigInt()
chỉ chấp nhận số nguyên hoặc chuỗi số hợp lệ, nếu truyền số thập phân sẽ gây lỗi:
console.log(BigInt(10.5)); // Lỗi: Cannot convert a number with decimals to a BigInt