1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
---
title: Number.isSafeInteger()
slug: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
translation_of: Web/JavaScript/Reference/Global_Objects/Number/isSafeInteger
---
<div>{{JSRef}}</div>
<p>Phương thức <strong><code>Number.isSafeInteger()</code></strong> xác định xem giá trị truyền vào có phải một số nằm trong khoảng của <dfn>số nguyên an toàn</dfn> hay không.</p>
<div>{{EmbedInteractiveExample("pages/js/number-issafeinteger.html")}}</div>
<p class="hidden">Tài nguyên dùng cho bài viết này được lưu trữ trong một kho của GitHub. Nếu bạn muốn đóng góp cho nó, hãy clone lại <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> và gửi cho chúng tôi một pull request.</p>
<p>Số nguyên an toàn là số nguyên mà</p>
<ul>
<li>có thể được biểu diễn chính xác theo chuẩn số nguyên độ chính xác kép IEEE-754, và</li>
<li>cách biểu diễn theo chuẩn IEEE-754 đó không thể bằng kết quả của một phép làm tròn số nguyên khác theo chuẩn biểu diễn IEEE-754.</li>
</ul>
<p>Chẳng hạn, <code>2<sup>53</sup> - 1</code> là một số nguyên an toàn: nó có thể hiển thị chính xác, và không có số nguyên nào có thể làm tròn đến nó với bất cứ chế độ làm tròn theo chuẩn IEEE-754. Ngoài ra, <code>2<sup>53</sup></code> <em>không phải</em> là một số nguyên an toàn: nó có thể được biểu diễn chính xác theo chuẩn IEEE-754, nhưng số nguyên <code>2<sup>53</sup> + 1</code> không thể hiển thị chính xác theo chuẩn IEEE-754 mà thay vào đó được làm tròn về <code>2<sup>53</sup></code> theo kiểu làm tròn về số gần nhất và làm tròn về không. Số nguyên an toàn nằm trong đoạn từ <code>-(2<sup>53</sup> - 1)</code> đến <code>2<sup>53</sup> - 1</code> (± <code>9007199254740991</code>hoặc ±9,007,199,254,740,991).</p>
<p>Xử lý giá trị lớn hơn hoặc nhỏ hơn ~9 triệu tỉ với độ chính xác toàn vẹn yêu cầu sử dụng <a href="https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic">thư viện số học độ chính xác bất kì</a>. Xem <a href="http://floating-point-gui.de/">What Every Programmer Needs to Know about Floating Point Arithmetic</a> để biết thêm thông tin về cách biểu diễn số thực dấu phẩy động.</p>
<h2 id="Cú_pháp">Cú pháp</h2>
<pre class="syntaxbox"><code>Number.isSafeInteger(<var>testValue</var>)</code>
</pre>
<h3 id="Tham_số">Tham số</h3>
<dl>
<dt><code>testValue</code></dt>
<dd>Giá trị để kiểm tra có phải số nguyên an toàn hay không.</dd>
</dl>
<h3 id="Giá_trị_trả_về">Giá trị trả về</h3>
<p>{{jsxref("Boolean")}} cho biết liệu giá trị truyền vào có phải là số nguyên an toàn hay không.</p>
<h2 id="Ví_dụ">Ví dụ</h2>
<pre class="brush: js">Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger('3'); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
</pre>
<h2 id="Polyfill">Polyfill</h2>
<pre class="brush: js">Number.isSafeInteger = Number.isSafeInteger || function (value) {
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};
</pre>
<h2 id="Đặc_tả">Đặc tả</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Đặc tả</th>
<th scope="col">Trạng thái</th>
<th scope="col">Ghi chú</th>
</tr>
<tr>
<td>{{SpecName('ES2015', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</td>
<td>{{Spec2('ES2015')}}</td>
<td>Định nghĩa lần đầu.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-number.issafeinteger', 'Number.isSafeInteger')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Trình_duyệt_hỗ_trợ">Trình duyệt hỗ trợ</h2>
<p class="hidden">Bảng trình duyệt hỗ trợ trong trang này được sinh từ cấu trúc dữ liệu. Nếu bạn muốn đóng góp cho khối dữ liệu, hãy xem qua <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> và gửi cho chúng tôi pull request.</p>
<p>{{Compat("javascript.builtins.Number.isSafeInteger")}}</p>
<h2 id="Xem_thêm">Xem thêm</h2>
<ul>
<li>Đối tượng {{jsxref("Number")}}.</li>
<li>{{jsxref("Number.MIN_SAFE_INTEGER")}}</li>
<li>{{jsxref("Number.MAX_SAFE_INTEGER")}}</li>
</ul>
|