Tôi đang đọc cuốn sách của Douglas Crockford - Javascript những phần tốt - và ông nói:thế nào là nhỏ tràn số nguyên tránh trong Javascript
JavaScript có một kiểu số duy nhất. Bên trong, nó được biểu diễn dưới dạng dấu phẩy động 64-bit, giống như dấu chấm kép của Java. Không giống như hầu hết các ngôn ngữ lập trình khác, không có loại số nguyên riêng biệt, vì vậy 1 và 1.0 có cùng giá trị. Đây là một sự thuận tiện đáng kể vì các vấn đề về tràn trong các số nguyên ngắn hoàn toàn tránh được ...
Tôi không quá quen thuộc với các ngôn ngữ khác để giải thích một chút. Tôi có thể hiểu lý do tại sao một chút 64 giúp nhưng tuyên bố của ông dường như áp dụng cho việc thiếu nổi và tăng gấp đôi.
Điều gì sẽ là (giả mã có lẽ) một ví dụ về tình huống tràn số nguyên ngắn sẽ không xảy ra trong JS?
số nguyên trong JS có thể từ - (2^53-1) đến (2^53-1) .. có hiệu quả một 54bit ký số nguyên (nhưng không hoàn toàn thực sự, nhưng đó không phải là có liên quan) ... số nguyên ngắn là 16bit ... 54bits lớn hơn 16bits ... do đó không có vấn đề tràn –
ví dụ cho chữ ký ngắn ... 32767 + 1 là 32768 trong JS, bằng các ngôn ngữ khác là -32768 –
@JaromandaX ... phải là '- (2^53 + 1)'? Tôi không biết ... chỉ đơn thuần là tò mò. – rnevius