Trong javascript Tôi muốn tạo ra băm nhị phân của một mảng boolean lớn (54 phần tử) với các phương pháp sau đây:Javascript cách tổng hợp các số nguyên lớn
function bhash(arr) {
for (var i = 0, L = arr.length, sum = 0; i < L; sum += Math.pow(2,i)*arr[i++]);
return sum;
}
Nói tóm lại: nó tạo ra số nguyên nhỏ nhất để lưu trữ một mảng Bây giờ vấn đề của tôi là javascript rõ ràng sử dụng float làm mặc định. Số lượng tối đa mà tôi phải tạo là 2^54-1 nhưng khi javascript đạt đến 2^53 thì bắt đầu làm những điều kỳ lạ:
9007199254740992+1 = 9007199254740994
Có cách nào sử dụng số nguyên thay vì nổi trong javascript không? Hoặc tổng số nguyên lớn?
Javascript không chỉ sử dụng loại dấu phẩy động làm mặc định, nó không * có * bất kỳ loại số nào khác - quyết định không phải là "phần tốt" của ngôn ngữ. –