Programming Track
JavaScript
Primitive Types
bigint
เรียนรู้ `bigint` สำหรับจำนวนเต็มขนาดใหญ่มาก การเติม `n` และข้อควรระวังเมื่อใช้ร่วมกับ `number`
bigint ใช้กับจำนวนเต็มขนาดใหญ่มาก
`bigint` คือ primitive type สำหรับจำนวนเต็มที่ใหญ่เกินกว่า `number` จะเก็บได้แม่น `number` เก็บจำนวนเต็มได้แม่นสูงสุดที่ `Number.MAX_SAFE_INTEGER` คือ `9007199254740991` เกินจากนี้ค่าจะเริ่มคลาดเคลื่อน สร้าง `bigint` ด้วยการเติม `n` หลังจำนวนเต็ม เช่น `9007199254740993n` ใช้กับ id หรือค่าจำนวนเต็มขนาดใหญ่ที่ต้องการความแม่นยำ
เมื่อ number ไม่แม่น ใช้ bigint แทนJS
// number เกินขอบเขต: ผลลัพธ์ผิด
console.log(9007199254740991 + 1); // 9007199254740992
console.log(9007199254740991 + 2); // 9007199254740992 ← เหมือนกัน!
// bigint: แม่นทุกค่า
let largeId = 9007199254740993n;
console.log(largeId); // 9007199254740993n
console.log(typeof largeId); // "bigint"bigint ห้ามคำนวณปนกับ number โดยตรง
`bigint` ใช้คำนวณกับ `bigint` ด้วยกันได้ แต่ไม่สามารถบวก ลบ คูณ หารปนกับ `number` โดยตรง ถ้าต้องผสมชนิด ต้องแปลงชนิดให้ชัดก่อน แต่สำหรับผู้เริ่มต้นให้เลือกใช้ชนิดเดียวกันตั้งแต่ต้น
คำนวณ bigint กับ bigintJS
let startId = 1000000000000000000n;
let nextId = startId + 1n;
console.log(nextId); // 1000000000000000001n
// startId + 1; // TypeError เพราะ 1 เป็น number- ใช้ `bigint` กับจำนวนเต็มขนาดใหญ่มาก
- เติม `n` หลังตัวเลขเพื่อสร้าง `bigint`
- อย่าคำนวณ `bigint` ปนกับ `number` โดยตรง