tek4

Kiểu dữ liệu số trong JavaScript

by - September. 26, 2021
Kiến thức
Học
<p><img class="aligncenter wp-image-8312 size-full" src="https://tek4.vn/wp-content/uploads/2021/02/Capture-103.png" alt="Kiểu dữ liệu số trong JavaScript" width="686" height="442" /></p> <p>Trong b&agrave;i viết n&agrave;y, ta sẽ c&ugrave;ng t&igrave;m hiểu về kiểu dữ liệu số trong JavaScript c&ugrave;ng với sự trợ gi&uacute;p của c&aacute;c v&iacute; dụ dẫn chứng.</p> <h1>Kiểu dữ liệu số trong JavaScript</h1> <p>Trong JavaScript, kiểu dữ liệu số l&agrave; một trong c&aacute;c kiểu dữ liệu căn bản.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 100; let b = 100.231;</pre> <p>Kh&ocirc;ng giống như một số ng&ocirc;n ngữ lập tr&igrave;nh kh&aacute;c, ta kh&ocirc;ng phải khai b&aacute;o cụ thể cho c&aacute;c gi&aacute; trị số nguy&ecirc;n hoặc số thực bằng c&aacute;ch sử dụng int, float,&hellip;</p> <p>Ta cũng c&oacute; thể sử dụng k&yacute; hiệu mũ e để th&ecirc;m c&aacute;c số lớn hoặc nhỏ.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a1 = 2e7; let a2 = 8e-7;</pre> <p>C&aacute;c kiểu dữ liệu số cũng c&oacute; thể được biểu thị bằng dạng cơ số thập lục ph&acirc;n.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 0x0f; console.log(a);</pre> <h2>To&aacute;n tử + sử dụng với kiểu dữ liệu số</h2> <p>Khi to&aacute;n tử + được sử dụng với c&aacute;c số, n&oacute; được sử dụng để t&iacute;nh tổng c&aacute;c số.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 142 + 2;</pre> <p>Khi to&aacute;n tử + được sử dụng với số v&agrave; chuỗi k&yacute; tự, n&oacute; được sử dụng để thực hiện ph&eacute;p nối v&agrave; cho kết quả l&agrave; chuỗi k&yacute; tự.</p> <p>V&iacute; dụ: Sử dụng to&aacute;n tử + thực hiện ph&eacute;p nối giữa kiểu dữ liệu số v&agrave; chuỗi k&yacute; tự.</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = '1' + 2; console.log(a);</pre> <p>Kết quả:</p> <pre>12</pre> <p>Khi một chuỗi k&yacute; tự số được sử dụng với c&aacute;c ph&eacute;p to&aacute;n học kh&aacute;c, chuỗi k&yacute; tự số sẽ được chuyển đổi th&agrave;nh một số.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = '2' * 2; let b = '2' - 2; console.log(a); console.log(b);</pre> <p>Kết quả:</p> <pre>4 0</pre> <h2>NaN trong JavaScript</h2> <p>Trong JavaScript, <code class="EnlighterJSRAW" data-enlighter-language="generic">NaN</code>(Not a Number) l&agrave; một từ kh&oacute;a chỉ ra một gi&aacute; trị n&agrave;o đ&oacute; kh&ocirc;ng phải l&agrave; một số. Thực hiện c&aacute;c ph&eacute;p t&iacute;nh to&aacute;n (ngoại trừ ph&eacute;p +) cho gi&aacute; trị kiểu số với chuỗi k&yacute; tự sẽ cho ra kết quả l&agrave; NaN.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 2 - 'a'; console.log(a);</pre> <p>Kết quả:</p> <pre>NaN</pre> <p>H&agrave;m <code class="EnlighterJSRAW" data-enlighter-language="generic">isNaN()</code>c&oacute; thể được sử dụng để kiểm tra xem một gi&aacute; trị c&oacute; phải l&agrave; một số hay kh&ocirc;ng.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">console.log(isNaN(2 - '2')); console.log(isNaN(2 - 'a'));</pre> <p>Kết quả:</p> <pre>false true</pre> <p>Trong JavaScript, khi ph&eacute;p t&iacute;nh to&aacute;n được thực hiện vượt qu&aacute; số lớn nhất (hoặc nhỏ nhất) c&oacute; thể, th&igrave; gi&aacute; trị Infinity (hoặc -Infinity) được trả về.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">console.log(2 / 0);</pre> <p>Kết quả:</p> <pre>Infinity</pre> <p>Trong đoạn m&atilde; tr&ecirc;n, ta đ&atilde; thực hiện ph&eacute;p chia cho gi&aacute; trị l&agrave; 0. Đối với một số ng&ocirc;n ngữ lập tr&igrave;nh kh&aacute;c, khi ta thực hiện ph&eacute;p chia cho gi&aacute; trị l&agrave; 0, tr&igrave;nh bi&ecirc;n dịch sẽ đưa ra th&ocirc;ng b&aacute;o về một ngoại lệ.</p> <h2>Kiểu dữ liệu BigInt</h2> <p>Trong JavaScript, kiểu dữ liệu số chỉ c&oacute; thể biểu diễn cho c&aacute;c số nhỏ hơn (2^53 - 1) v&agrave; lớn hơn -(2^53 - 1). Tuy nhi&ecirc;n, nếu ta cần sử dụng một số lớn hơn hoặc nhỏ hơn, ta c&oacute; thể sử dụng kiểu dữ liệu BigInt.</p> <p>Kiểu dữ liệu số BigInt được tạo bằng c&aacute;ch th&ecirc;m n v&agrave;o cuối một số nguy&ecirc;n.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">var a = 893859382958394585n; console.log(a);</pre> <p>Kết quả:</p> <pre>893859382958394585n</pre> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Kiểu dữ liệu BigInt đ&atilde; được giới thiệu trong phi&ecirc;n bản JavaScript mới hơn v&agrave; kh&ocirc;ng được nhiều tr&igrave;nh duyệt hỗ trợ.</span></strong></p> <h2>Kiểu dữ liệu số trong JavaScript được lưu trữ ở dạng 64-bit</h2> <p>Trong JavaScript, c&aacute;c số được lưu trữ ở định dạng 64-bit IEEE-754. C&aacute;c số được lưu trữ ở dạng 64 bit (số được lưu trữ ở vị tr&iacute; từ 0 đến 51 bit, số mũ ở vị tr&iacute; 52 đến 62 bit v&agrave; dấu ở vị tr&iacute; bit 63).</p> <h3>Vấn đề về độ ch&iacute;nh x&aacute;c</h3> <p>C&aacute;c ph&eacute;p to&aacute;n tr&ecirc;n số thập ph&acirc;n dẫn đến một số kết quả kh&ocirc;ng mong muốn.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 0.25 + 0.4743; console.log(a);</pre> <p>Kết quả:</p> <pre>0.7242999999999999</pre> <p>Ta c&oacute; thể sử dụng phương thức <code class="EnlighterJSRAW" data-enlighter-language="generic">toFixed()</code>để l&agrave;m tr&ograve;n số thập ph&acirc;n.</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">const a = 0.25 + 0.4743; console.log(a.toFixed(3));</pre> <p>Kết quả:</p> <pre>0.724</pre> <h2>C&aacute;c đối tượng dạng kiểu dữ liệu số</h2> <p>Ta cũng c&oacute; thể tạo số bằng từ kh&oacute;a <code class="EnlighterJSRAW" data-enlighter-language="generic">new</code>.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">const a = 10; const b = new Number(2); console.log(typeof a); console.log(typeof b);</pre> <p>Kết quả:</p> <pre>number object</pre> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: N&ecirc;n tr&aacute;nh sử dụng c&aacute;c đối tượng ở dạng kiểu dữ liệu số. Sử dụng c&aacute;c đối tượng dạng số sẽ l&agrave;m chậm qu&aacute; tr&igrave;nh hoạt động của chương tr&igrave;nh.</span></strong></p> <h2>C&aacute;c phương thức thực hiện với kiểu dữ liệu số trong JavaScript</h2> <table> <tbody> <tr> <td style="text-align: center;">Phương thức</td> <td style="text-align: center;">M&ocirc; tả</td> </tr> <tr> <td style="text-align: center;">isNaN()</td> <td>Kiểm tra xem số được truyền v&agrave;o c&oacute; phải l&agrave; kiểu dữ liệu số hay kh&ocirc;ng.</td> </tr> <tr> <td style="text-align: center;">isFinite()</td> <td>Kiểm tra xem số được truyền v&agrave;o c&oacute; hữu hạn hay kh&ocirc;ng.</td> </tr> <tr> <td style="text-align: center;">isInteger()</td> <td>Kiểm tra xem số được truyền v&agrave;o c&oacute; phải l&agrave; số nguy&ecirc;n hay kh&ocirc;ng.</td> </tr> <tr> <td style="text-align: center;">isSafeInteger()</td> <td>Kiểm tra xem số được truyền v&agrave;o c&oacute; phải l&agrave; số nguy&ecirc;n an to&agrave;n hay kh&ocirc;ng.</td> </tr> <tr> <td style="text-align: center;">parseFloat(string)</td> <td>Chuyển đổi chuỗi k&yacute; tự số thập ph&acirc;n th&agrave;nh số thập ph&acirc;n.</td> </tr> <tr> <td style="text-align: center;">parseInt(string, [radix])</td> <td>Chuyển đổi chuỗi k&yacute; tự số th&agrave;nh số nguy&ecirc;n.</td> </tr> <tr> <td style="text-align: center;">toExponential(fractionDigits)</td> <td>Trả về gi&aacute; trị chuỗi k&yacute; tự cho một số ở dạng số mũ.</td> </tr> <tr> <td style="text-align: center;">toFixed(digits)</td> <td>Trả về gi&aacute; trị chuỗi cho một số ở dạng cố định tại một điểm.</td> </tr> <tr> <td style="text-align: center;">toPrecision()</td> <td>Trả về gi&aacute; trị chuỗi cho một số ở dạng ch&iacute;nh x&aacute;c nhất định.</td> </tr> <tr> <td style="text-align: center;">toString([radix])</td> <td>Trả về gi&aacute; trị chuỗi cho ở dạng radix được x&aacute;c định.</td> </tr> <tr> <td style="text-align: center;">valueof()</td> <td>Trả về gi&aacute; trị số.</td> </tr> </tbody> </table> <p>V&iacute; dụ: Sử dụng một số phương thức của kiểu dữ liệu số.</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 3; console.log(Number.isInteger(a)); let b = a - 'a'; console.log(Number.isNaN(b)); const c = 0.234 + 0.5; console.log(c.toFixed(3));</pre> <p>Kết quả:</p> <pre>true true 0.734</pre> <h2>C&aacute;c thuộc t&iacute;nh của kiểu dữ liệu số</h2> <table> <tbody> <tr> <td style="text-align: center;">Thuộc t&iacute;nh</td> <td style="text-align: center;">M&ocirc; tả</td> </tr> <tr> <td style="text-align: center;">EPSILON</td> <td>Trả về khoảng nhỏ nhất giữa 2 số c&oacute; thể biểu diễn được.</td> </tr> <tr> <td style="text-align: center;">MAX_SAFE_INTEGER</td> <td>Trả về số nguy&ecirc;n an to&agrave;n lớn nhất.</td> </tr> <tr> <td style="text-align: center;">MAX_VALUE</td> <td>Trả về số lớn nhất.</td> </tr> <tr> <td style="text-align: center;">MIN_SAFE_INTEGER</td> <td>Trả về số nguy&ecirc;n an to&agrave;n nhỏ nhất.</td> </tr> <tr> <td style="text-align: center;">MIN_VALUE</td> <td>Trả về số nhỏ nhất.</td> </tr> <tr> <td style="text-align: center;">NaN</td> <td>Đại diện cho gi&aacute; trị kh&ocirc;ng phải l&agrave; số.</td> </tr> <tr> <td style="text-align: center;">NEGATIVE_INFINITY</td> <td>Đại diện cho gi&aacute; trị &acirc;m v&ocirc; cực.</td> </tr> <tr> <td style="text-align: center;">POSITIVE_INFINITY</td> <td>Đại diện cho gi&aacute; trị dương v&ocirc; cực.</td> </tr> <tr> <td style="text-align: center;">prototype</td> <td>Cho ph&eacute;p thực hiện th&ecirc;m c&aacute;c thuộc t&iacute;nh v&agrave;o đối tượng số.</td> </tr> </tbody> </table> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = Number.EPSILON; console.log(a); let b = Number.MAX_VALUE; console.log(b);</pre> <p>Kết quả:</p> <pre>2.220446049250313e-16 1.7976931348623157e+308</pre> <h2>H&agrave;m Number()</h2> <p>H&agrave;m <code class="EnlighterJSRAW" data-enlighter-language="generic">Number()</code>được sử dụng để chuyển đổi c&aacute;c kiểu dữ liệu kh&aacute;c th&agrave;nh kiểu dữ liệu dạng số.</p> <p>V&iacute; dụ: Chuyển đổi kiểu dữ liệu sang dạng kiểu dữ liệu số.</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = '100'; let b = false; let a1 = Number(a); let b1 = Number(b); console.log(a1); console.log(b1);</pre> <p>Kết quả:</p> <pre>100 0</pre> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về kiểu dữ liệu số trong JavaScript. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i tiếp theo về lập tr&igrave;nh JavaScript tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p> <p>P/s: Cảm ơn mọi người đ&atilde; tin tưởng tek4!</p>