Hằng số
8 biểu thị số nguyên an toàn tối đa trong JavaScript [253 - 1].Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
8 constant represents the maximum safe integer in JavaScript [253 – 1].Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
Đối với các số nguyên lớn hơn, hãy xem xét sử dụng
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
9.Thử nó
Sự mô tả
Hằng số
Number.MAX_SAFE_INTEGER
0 có giá trị Number.MAX_SAFE_INTEGER
1 [9,007,199,254,740,991, hoặc ~ 9 triệu triệu].Định dạng điểm nổi chính xác gấp đôi chỉ có 52 bit để biểu diễn mantissa, do đó nó chỉ có thể biểu diễn một cách an toàn các số nguyên giữa -[253 -1] và 253 -1. "An toàn" trong bối cảnh này đề cập đến khả năng biểu diễn số nguyên chính xác và so sánh chúng một cách chính xác. Ví dụ,
Number.MAX_SAFE_INTEGER
2 sẽ đánh giá đúng, điều này không chính xác về mặt toán học. Xem Number.MAX_SAFE_INTEGER
3 để biết thêm thông tin.Vì
Number.MAX_SAFE_INTEGER
0 là thuộc tính tĩnh của Number.MAX_SAFE_INTEGER
5, bạn luôn sử dụng nó dưới dạng Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
8, thay vì là một thuộc tính của giá trị số.Ví dụ
Trả về giá trị của max_safe_integer
Number.MAX_SAFE_INTEGER; // 9007199254740991
Mối quan hệ giữa MAX_SAFE_Integer và Epsilon
Number.MAX_SAFE_INTEGER
7 là 2-52, trong khi Number.MAX_SAFE_INTEGER
0 là 253-1-cả hai đều có nguồn gốc từ chiều rộng của mantissa, là 53 bit [với bit cao nhất luôn là 1]. Nhân chúng sẽ cho một giá trị rất gần - nhưng không bằng - với 2.Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
Thông số kỹ thuật
Thông số kỹ thuật ngôn ngữ Ecmascript # sec-number.max_safe_integer # sec-number.max_safe_integer |
Tính tương thích của trình duyệt web
Bảng BCD chỉ tải trong trình duyệt
Xem thêm
toPrecision[precision] Phương thức này trả về một chuỗi đại diện cho số với độ chính xác [precision] đã chỉ định. Show
8 constant represents the maximum safe integer in JavaScript [253 – 1].Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
5 Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
8 constant represents the maximum safe integer in JavaScript [253 – 1].Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
toExponential[]
Trả về một chuỗi đại diện cho số này theo ký hiệu số mũ [exponential notation].
precision − Một số nguyên chỉ định số chữ số có nghĩa.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
5 Phương thức toString[radix] trả về một chuỗi đại diện cho số hiện tại trong hệ cơ số [radix/base] được chỉ định bởi tham số.
radix [base]: Một số nguyên trong khoảng 2 và 36 chỉ định hệ cơ số [base] để biểu diễn [representing] số. Mặc định là 10.
valueOf[]
Phương thức này trả về giá trị nguyên thủy của đối tượng số đã chỉ định.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
5
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
Number.MAX_SAFE_INTEGER; // 9007199254740991
Phương thức toString[radix] trả về một chuỗi đại diện cho số hiện tại trong hệ cơ số [radix/base] được chỉ định bởi tham số.
radix [base]: Một số nguyên trong khoảng 2 và 36 chỉ định hệ cơ số [base] để biểu diễn [representing] số. Mặc định là 10.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
radix [base]: Một số nguyên trong khoảng 2 và 36 chỉ định hệ cơ số [base] để biểu diễn [representing] số. Mặc định là 10.
Phương thức này trả về giá trị nguyên thủy của đối tượng số đã chỉ định. # sec-number.max_safe_integer |
valueOf[]
Phương thức này trả về giá trị nguyên thủy của đối tượng số đã chỉ định.
valueOf-example.js
The
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
8 constant represents the maximum safe integer in JavaScript [253 – 1].MAX_SAFE_INTEGER constant has a value of 253 - 1 [9007199254740991].Nội dung chính Show
Description
Return value of MAX_SAFE_INTEGER
Number.MAX_SAFE_INTEGER
Numbers higher than safe integer
Phương thức này trả về giá trị nguyên thủy của đối tượng số đã chỉ định.
value = Number.MAX_SAFE_INTEGER;
console.log[value]; // 9007199254740991
value_plus_1 = value + 1;
value_plus_2 = value + 2;
// JS Number cannot exactly represent integers greater than 'value'
// and correctly compare them
console.log[value_plus_1 == value_plus_2]; // true
valueOf-example.js
9007199254740991 true
Note: If you have to use integers greater than MAX_SAFE_INTEGER, consider using BigInt. If you have to use integers greater than MAX_SAFE_INTEGER, consider using BigInt.
Recommended Readings:
- JavaScript Number.isSafeInteger[]
- JavaScript Number.MIN_SAFE_INTEGER
Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
1- ECMAScript Number
Trong ECMAScript, kiểu dữ liệu Number đại diện cho một số, nó có thể là một số nguyên [Integer], hoặc một số chấm động [Floating-point Number]. ECMAScript, kiểu dữ liệu Number đại diện cho một số, nó có thể là một số nguyên [Integer], hoặc một số chấm động [Floating-point Number].
Dựa trên cách quản lý dựa liệu trên bộ nhớ [memory] mà Number được chia làm 2 loại Number Object và Number Primitive: Number được chia làm 2 loại Number Object và Number Primitive:
Number Primitive:
Thông thường để tạo ra một số bạn nên sử dụng cú pháp nguyên thủy [Primitive]:
// Primitive Syntax:
var myNumber1 = 100;
var myNumber2 = 55.1;
Các Number primitive được quản lý trong Common Pool [Bể chứa thông thường], điều này có nghĩa là khi bạn khai báo 2 hoặc nhiều Number primitive có cùng giá trị, chúng sẽ cùng trỏ đến một vị trí bộ nhớ trong Common Pool. Number primitive được quản lý trong Common Pool [Bể chứa thông thường], điều này có nghĩa là khi bạn khai báo 2 hoặc nhiều Number primitive có cùng giá trị, chúng sẽ cùng trỏ đến một vị trí bộ nhớ trong Common Pool.
Toán tử === được sử dụng để kiểm tra xem 2 biến có cùng trỏ đến cùng một địa chỉ trên bộ nhớ [memory] hay không. === được sử dụng để kiểm tra xem 2 biến có cùng trỏ đến cùng một địa chỉ trên bộ nhớ [memory] hay không.
number-primitive-example1.js
let a = 100;
let b = 150.1;
let c = 150.1;
// a, b: Same address?
console.log[ a === b]; // false
// b, c: Same address?
console.log[ b === c]; // true
Bạn cũng có thể tạo ra một số bằng cách sử dụng hàm Number[value], kết quả bạn nhận được là một Number primitive: Number[value], kết quả bạn nhận được là một Number primitive:
number-primitive-example2.js
let a = 100;
let b = 150.1;
// Using Number[] function
let c = Number[150.1];
// a, b: Same address?
console.log[ a === b]; // false
// b, c: Same address?
console.log[ b === c]; // true
Number object:
Bạn có thể tạo ra một số thông qua constructor của lớp Number. Trường hợp này bạn sẽ nhận được một Number object [đối tượng số]. constructor của lớp Number. Trường hợp này bạn sẽ nhận được một Number object [đối tượng số].
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
0Toán tử new luôn luôn tạo ra một thực thể mới trên bộ nhớ Heap. new luôn luôn tạo ra một thực thể mới trên bộ nhớ Heap.
Khi bạn gán giá trị mới cho biến bb là biến aa. Biến bb sẽ trỏ tới địa chỉ trên bộ nhớ nơi mà biến aa đang trỏ tới, sẽ không có một thực thể nào được tạo ra trên bộ nhớ trong trường hợp này. bb là biến aa. Biến bb sẽ trỏ tới địa chỉ trên bộ nhớ nơi mà biến aa đang trỏ tới, sẽ không có một thực thể nào được tạo ra trên bộ nhớ trong trường hợp này.
number-object-example2.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
1Number object vs Number primitive
Các Number primitive được lưu trữ trên Stack [Common Pool]. Trong khi đó các Number object được tạo ra và lưu trữ trên bộ nhớ Heap, nó yêu cầu quản lý bộ nhớ phức tạp và tốn không gian lưu trữ. Vì vậy bạn nên sử dụng Number primitive thay vì Number object bất cứ lúc nào có thể. Number primitive được lưu trữ trên Stack [Common Pool]. Trong khi đó các Number object được tạo ra và lưu trữ trên bộ nhớ Heap, nó yêu cầu quản lý bộ nhớ phức tạp và tốn không gian lưu trữ. Vì vậy bạn nên sử dụng Number primitive thay vì Number object bất cứ lúc nào có thể.
typeof
Toán tử typeof[Number_object] sẽ trả về chuỗi 'object', trong khi đó typeof[Number_primitive] sẽ trả về chuỗi 'number': typeof[Number_object] sẽ trả về chuỗi 'object', trong khi đó typeof[Number_primitive] sẽ trả về chuỗi 'number':
typeof-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
22- So sánh các số
Toán tử === được sử dụng để so sánh địa chỉ trên bộ nhớ mà 2 biến đang trỏ đến. === được sử dụng để so sánh địa chỉ trên bộ nhớ mà 2 biến đang trỏ đến.
comparing-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
3Toán tử == được sử dụng để so sánh giá trị của 2 biến. Nó làm việc hoàn hảo đối với các kiểu dữ liệu nguyên thủy [Primitive] như: Boolean [primitive], Number [primitive], String [Literal], null, undefined, NaN. Nhưng nó có thể hoạt động không giống như cách bạn đang nghĩ đối với các kiểu dữ liệu Object. Kiểu dữ liệu Number trong ECMAScript có thể là Primitive hoặc có thể là Object, vì vậy bạn cần cẩn thận khi sử dụng toán tử này. Boolean [primitive], Number [primitive], String [Literal], null, undefined, NaN. Nhưng nó có thể hoạt động không giống như cách bạn đang nghĩ đối với các kiểu dữ liệu Object. Kiểu dữ liệu Number trong ECMAScript có thể là Primitive hoặc có thể là Object, vì vậy bạn cần cẩn thận khi sử dụng toán tử này.
Ví dụ: Toán tử == hoạt động hoàn hảo khi so sánh các Number Primitive: == hoạt động hoàn hảo khi so sánh các Number Primitive:
comparing-example2.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
4Ví dụ: Toán tử == hoạt động không như cách bạn đang nghĩ khi so sánh 2 Number object: == hoạt động không như cách bạn đang nghĩ khi so sánh 2 Number object:
comparing-example3.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
5 Nếu bạn không chắc chắn biến của bạn là Number object hay Number primitive, bạn nên sử dụng hàm Number[value] để chuyển đổi nó thành Number primitive trước khi sử dụng toán tử ==. Number object hay Number primitive, bạn nên sử dụng hàm Number[value] để chuyển đổi nó thành Number primitive trước khi sử dụng toán tử ==.
comparing-example3b.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
6Ví dụ: Sử dụng toán tử == để so sánh giá trị của một Number primitive với giá trị của một Number object: == để so sánh giá trị của một Number primitive với giá trị của một Number object:
comparing-example4.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
73- Các hằng số
Lớp Number định nghĩa sẵn một vài hằng số [Constant] quan trọng: Number định nghĩa sẵn một vài hằng số [Constant] quan trọng:
- Number.EPSILON
- Number.MAX_SAFE_INTEGER
- Number.MAX_VALUE
- Number.MIN_SAFE_INTEGER
- Number.MIN_VALUE
- Number.NEGATIVE_INFINITY
- Number.NaN
- Number.POSITIVE_INFINITY
Number.EPSILON
Khoảng cách nhỏ nhất giữa 2 số có thể biểu diễn.
epsilon-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
8Number.MAX_SAFE_INTEGER
Số nguyên [interger] lớn nhất mà ECMAScript có thể biểu diễn [
9007199254740991 true3 ]. ECMAScript có thể biểu diễn [
9007199254740991 true3 ].
max-safe-integer-exampl
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
9Number.MIN_SAFE_INTEGER
Số nguyên [interger] nhỏ nhất mà ECMAScript có thể biểu diễn [
9007199254740991 true4]. ECMAScript có thể biểu diễn [
9007199254740991 true4].
min-safe-integer-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
0Number.MAX_VALUE
Số lớn nhất mà ECMAScript có thể biểu diễn. ECMAScript có thể biểu diễn.
max-value-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
1Number.MIN_VALUE
Số nhỏ nhất mà ECMAScript có thể biểu diễn. ECMAScript có thể biểu diễn.
min-value-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
2Number.NaN
Chỉ định giá trị "Not a number"."Not a number".
Example:
Nếu giá trị của tham số mà bạn truyền [pass] vào constructor của Number không phải là một số bạn sẽ nhận được được đối tượng NaN [Not-a-Number]. Hoặc trong một tình huống khác, nếu bạn chia một chuỗi cho một số giá trị nhận được cũng là NaN. constructor của Number không phải là một số bạn sẽ nhận được được đối tượng NaN [Not-a-Number]. Hoặc trong một tình huống khác, nếu bạn chia một chuỗi cho một số giá trị nhận được cũng là NaN.
NaN-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
3Number.NEGATIVE_INFINITY
Giá trị đại diện cho một số âm vô cùng [Negative infinity].
negative-infinity-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
4Number.POSITIVE_INFINITY
Giá trị đại diện cho một số dương vô cùng [Positive infinity].
positive-infinity-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
54- Các phương thức tĩnh
Lớp Number cung cấp cho bạn một vài phương thức tĩnh rất có ích: Number cung cấp cho bạn một vài phương thức tĩnh rất có ích:
- Number.isNaN[number]
- Number.isFinite[number]
- Number.isInteger[number]
- Number.isSafeInteger[number]
- Number.parseFloat[string]
- Number.parseInt[string]
Đây là một phương thức tĩnh, giúp kiểm tra xem một giá trị nào đó có phải là NaN hay không. NaN hay không.
isNaN-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
6Number.isFinite[number]
Đây là một phương thức tĩnh, giúp kiểm tra một giá trị có phải là một số hữu hạn [finite] hay không. Phương thức trả về true/false. true/false.
isFinite-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
7Number.isInteger[number]
Đây là một phương thức tĩnh, giúp kiểm tra một giá trị có phải là một số nguyên [integer] hay không. Phương thức trả về true/false. true/false.
isInteger-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
8Number.isSafeInteger[number]
Đây là một phương thức tĩnh, giúp kiểm tra một giá trị có phải là một số nguyên [integer] và thuộc phạm vi an toàn [-[2^53-1], 2^53 -1] hay không. Phương thức trả về true/false. [-[2^53-1], 2^53 -1] hay không. Phương thức trả về true/false.
isSafeInteger-example.js
Number.MAX_SAFE_INTEGER; // 9007199254740991
9Number.parseFloat[string]
Đây là một phương thức tĩnh, phân tích một chuỗi trong tham số và trả về một số kiểu chấm động [floating point number].
parseFloat-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
0Number.parseInt[string]
Đây là một phương thức tĩnh, phân tích một chuỗi trong tham số và trả về một số nguyên [Integer].
parseInt-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
15- Các phương thức
- toExponential[]
- toFixed[digits]
- toLocaleString[]
- toPrecision[precision]
- toString[radix]
- valueOf[]
toExponential[]
Trả về một chuỗi đại diện cho số này theo ký hiệu số mũ [exponential notation].
toExponential-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
2toFixed[digits]
Phương pháp này định dạng một số, chỉ định số chữ số cụ thể ở bên phải của số thập phân. Phương thức trả về một chuỗi [String].
Tham số:
- digits: Số chữ số xuất hiện sau dấu chấm thập phân [decimal point].: Số chữ số xuất hiện sau dấu chấm thập phân [decimal point].
toFixed-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
3toLocaleString[]
Phương thức này chuyển đổi một đối tượng số thành một chuỗi mà con người có thể đọc được, theo Locale của môi trường. Locale của môi trường.
toLocaleString-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
4toPrecision[precision]
Phương thức này trả về một chuỗi đại diện cho số với độ chính xác [precision] đã chỉ định.
Tham số:
- digits: Số chữ số xuất hiện sau dấu chấm thập phân [decimal point]. − Một số nguyên chỉ định số chữ số có nghĩa.
toPrecision-example.js
toFixed-example.jstoLocaleString[] toString[radix] trả về một chuỗi đại diện cho số hiện tại trong hệ cơ số [radix/base] được chỉ định bởi tham số.
Tham số:
- digits: Số chữ số xuất hiện sau dấu chấm thập phân [decimal point].: Một số nguyên trong khoảng 2 và 36 chỉ định hệ cơ số [base] để biểu diễn [representing] số. Mặc định là 10.
toString-example.js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
6toFixed-example.js
toLocaleString[]
Phương thức này chuyển đổi một đối tượng số thành một chuỗi mà con người có thể đọc được, theo Locale của môi trường.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2
7