Khi chạyJavascript parseInt chuyển đổi là buggy
console.log(parseInt("9658921879781125"))
9658921879781124
, đó là ít hơn so với giá trị ban đầu.
Tại sao lại xảy ra trường hợp này?
Khi chạyJavascript parseInt chuyển đổi là buggy
console.log(parseInt("9658921879781125"))
9658921879781124
, đó là ít hơn so với giá trị ban đầu.
Tại sao lại xảy ra trường hợp này?
Đó sẽ là vì
9658921879781125 > Number.MAX_SAFE_INTEGER // true
Vì vậy, nó là an toàn để cố gắng làm việc với những con số lớn hơn Number.MAX_SAFE_INTEGER
Các
MAX_SAFE_INTEGER
liên tục có giá trị9007199254740991
(9,007,199,254,740,991 hoặc ~ 9 quadrillion). Lý do đằng sau con số đó là JavaScript sử dụng đôi chính xác số định dạng dấu chấm động theo quy định tại IEEE 754 và chỉ có một cách an toàn có thể biểu diễn số giữa - (2 -1) và 2 - 1.An toàn trong ngữ cảnh này đề cập đến khả năng trình bày chính xác các số nguyên và so sánh chính xác các số nguyên.
http://2ality.com/2012/07/large-integers.html –
nhưng có thể chuyển đổi 9658921879781126 đúng –
Xem câu trả lời của G. Petrioli. Nó không an toàn, nó không có nghĩa là nó sẽ thất bại mọi lúc. – NikxDa