Kiểm tra số thực trong JavaScript
Kiểu bigInt là kiểu số đặc biết nên mình sẽ tìm hiểu sau. Bài viết này chỉ tập trung vào number thông thường. Show
Cách khác để biểu diễn number trong JavaScriptGiả sử bạn cần biểu diễn số 1 tỷ:
Nếu bạn chỉ nhìn qua thì rất khó nhận biết đó là số 1 tỷ. Có thể bạn sẽ phải đếm xem có bao nhiêu số 0 trong đó. Thay vì phải đếm như vậy, JavaScript cho phép bạn sử dụng kí tự gạch chân 6 để phân tách các chữ số:
Rõ ràng cách viết này dễ nhìn hơn. Và kết quả thì vẫn không thay đổi. Vì JavaScript engine sẽ bỏ qua, không xử lý kí tự 6 trong number.Trong thực tế cuộc sống, chúng ta thường không muốn viết hết các chữ số 8 mà thường viết tắt, ví dụ: 1000 thành 1K, 1000000 thành 1M,...Với JavaScript cũng vậy, bạn có thể dùng chữ cái 9 để biểu diễn số lượng chữ số 8, ví dụ:
Nói cách khác, 1 thực hiện nhân số (trước 9) bởi với số 10 mũ N.
Tương tự, bạn cũng có thể dùng 9 để biểu diễn những số rất nhỏ bằng cách thay 4 ở trên bằng số âm:
Nói cách khác, 5 thực hiện chia số (trước 9) bởi số 10 mũ N.
Biểu diễn số ở hệ cơ số 16, 8 và 2Các số mình thường viết trên đây là biểu diễn ở hệ thập phân (cơ số 10). Ngoài ra, bạn có thể biểu diễn number trong JavaScript ở hệ thập lục phân (cơ số 16), bát phân (cơ số 8) và nhị phân (cơ số 2).
biểu diễn số ở hệ 16, 8 và 2 là:
Phương thức 0 trả về string biểu diễn số 1 ở hệ cơ số 2, ví dụ:
Trong đó, 2 có giá trị nằm trong đoạn từ 2 đến 36. Mặc định, 2 là 10.Một số trường hợp phổ biến:
cách viết dùng hai dấu chấm 4 như trên không phải lỗi chính tả. Nếu bạn muốn gọi phương thức của number, ví dụ 5, bạn cần phải dùng hai dấu chấmNếu bạn dùng một dấu chấm thì sẽ có lỗi cú pháp:
Bởi vì, JavaScript hiểu rằng sau dấu 6 đầu tiên là phần thập phân của số thực. Mà đằng sau 6 lại là 8 thì chắc chắn sai cú pháp.Ngược lại, khi bạn viết hai dấu chấm 4, JavaScript ngầm định phần thập phân là rỗng, rồi sau đó đến phương thức.Nói cách khác, cách viết hai dấu chấm 4 tương đương với cách viết sử dụng 1 như sau: 0Để code rõ ràng và an toàn hơn, bạn nên sử dụng 1Làm tròn number trong JavaScriptMột trong những phép toán hay sử dụng với number trong JavaScript nhất là làm tròn số. JavaScript có sẵn một số hàm giúp bạn làm tròn số như: ► 3:Từ floor dịch ra là sàn nhà - suy ra hàm 3 dùng để làm tròn xuống. Ví dụ: 5 trở thành 6 và 7 trở thành 8.► 9:Từ ceil dịch ra là trần nhà - suy ra hàm 9 dùng để làm tròn lên. Ví dụ: 5 trở thành 2 và 7 trở thành 4.► 5:Hàm này trả về số nguyên gần nhất (có thể làm tròn lên hoặc làm tròn xuống). Ví dụ: 5 trả về 6, 8 trở thành 2 và giá trị ở giữa 0 cũng trở thành 2.► 2 (không hỗ trợ bởi trình duyệt IE):Hàm này trả về số nguyên bằng cách xóa bỏ đi tất cả thành phần sau dấu phẩy. Ví dụ: 5 trở thành 6 và 7 trở thành 4.Trên đây là những hàm giúp làm tròn thành số nguyên. Vậy làm sao để làm tròn thành số thực với chính xác 7 chữ số sau dấu phẩy.làm sao để làm tròn số 8 thành 9 (2 chữ số sau dấu phẩy)?Có hai cách để giải quyết vấn đề trên.
Ví dụ để làm tròn 2 chữ số sau dấu phẩy, bạn nhân số ban đầu với 00 (2 chữ số 8). Sau đó, bạn dùng 5 để làm tròn kết quả về số nguyên gần nhất. Cuối cùng, bạn chia kết quả cho 00 sẽ thu được kết quả như mong muốn. 1
Phương thức này sẽ làm tròn số và trả về string với chính xác 7 chữ số sau dấu phẩy. 2Trường hợp phần thập phân không đủ 7 chữ số thì phương thức 04 tự động thêm các chữ số 8 phía sau cho đủ 7 chữ số. 3Để chuyển đổi kiểu dữ liệu string về number, bạn có thể dùng hàm 10 hoặc toán tử một ngôi 11, ví dụ: 4Sai số với number trong JavaScriptTrong JavaScript, số thông thường được biểu diễn dưới dạng số thực dấu phẩy động theo chuẩn IEEE-754. Định dạng này sử dụng 64 bit để lưu trữ một số, trong đó:
Nếu một số quá lớn, vượt ngoài khả năng biểu diễn của 64 bit thì sẽ trở thành 14 hoặc 15: 5Đối với các số thực, một vấn đề thường xuyên xảy ra là sự sai số. Một ví dụ kinh điển: 6Kết quả là 16 vì thực tế 17 bằng số khác: 7Hiểu đơn giản là: khi biểu diễn số thực dưới dạng nhị phân trong máy tính, không có cách nào để biểu diễn chính xác số 18 và 19. Dẫn đến kết quả bị sai số như trên.Ví dụ mình sử dụng phương thức 20 để xem giá trị thực sự của các số thế nào: 8Rõ ràng là chúng không thực sự bằng 18 và 19.Để giải quyết vấn đề này, bạn có thể sử dụng phương pháp nhân-rồi-chia hoặc phương thức 23 như mình đã đề cập ở trên: 9Kiểm tra số với let oneBillion = 1_000_000_000; 24 và let oneBillion = 1_000_000_000; 25Để kiểm tra number trong JavaScript, bạn có thể dùng một trong hai hàm là: 24 hoặc 25.► Hàm 28:Hàm này chuyển đổi 29 thành dạng số rồi kiểm tra xem có bằng 30 hay không. 0Vấn đề là hàm 24 có thật sự cần thiết hay không?Câu trả lời là CÓ. Bởi vì giá trị 30 là duy nhất. 30 không bằng bất kỳ giá trị nào khác: 1Nghĩa là bạn không thể dùng toán tử so sánh bằng 34 để so sánh số với 30.► Hàm 36:Hàm này chuyển đổi giá trị 29 thành dạng số và trả về 38 nếu số đó khác 14, 15 và 30, ngược lại thì trả về 16. 2Hàm 36 cũng thường dùng để kiểm tra một giá trị string có phải là số bình thường hay không.Ví dụ khi nhập vào một số với hàm 44: 3String rỗng hoặc string toàn dấu cách chuyển sang dạng số thành số 8.Để so sánh hai number trong JavaScript, bạn cũng có thể dùng phương thức 46:
Trong hầu hết các trường hợp, phương thức 46 tương đương với so sánh bằng nghiêm ngặt 34.Hàm let oneBillion = 1_000_000_000; 60 và hàm let oneBillion = 1_000_000_000; 61Có thể bạn đã biết hai cách để chuyển đổi string thành dạng số là:
4Tuy nhiên, nếu trong string chứa kí tự không phải dạng số thì kết quả là 30: 5Thực tế, có một số trường hợp string chứa cả số và đơn vị phía sau như 65, 66, 67,... Làm sao để tách lấy phần số từ các string này?Trong JavaScript, bạn có thể sử dụng hai hàm 60 và 61. Hai hàm này sẽ đọc string từ trái sang phải cho đến khi gặp kí tự không thỏa mãn thì dừng lại.
Một số ví dụ: 6Nếu không thể tách được số nào thì 60 và 61 trả về 30: 7hàm 75 có tham số thứ hai 76 biểu diễn hệ cơ số (từ 77 đến 78)Ví dụ tách lấy số nguyên ở các hệ cơ số khác nhau: 8Một số hàm toán họcNgoài các phương thức 3, 9, 5 và 2 đã trình bày ở trên, đối tượng 83 còn có các phương thức khác giúp bạn thực hiện một số hàm toán học.► 84Phương thức này trả về một giá trị ngẫu nhiên từ 8 đến 0 (không bao gồm 0), ví dụ: 9► 88 và 89Hai phương thức này trả về giá trị lớn nhất (nhỏ nhất) từ một dãy số đầu vào. 0► 90Trả về số 7 mũ 2. 1Đối tượng 83 còn rất nhiều phương thức hữu ích khác. Bạn có thể tham khảo thêm tại bài viết: Math.Tổng kếtSau đây là một số kiến thức về number trong JavaScript. Bạn có thể dùng kí tự 6 để ngăn cách các chữ số cho dễ nhìn. Ví dụ 95 tương đương 96.Trường hợp có nhiều chữ số 8 đằng sau, bạn có thể dùng kí tự 9 theo sau là một số 4 để biểu diễn:
JavaScript hỗ trợ biểu diễn số ở hệ cơ số khác:
Để chuyển một số sang string với hệ cơ số tương ứng, bạn dùng 0, với 2 là hệ cơ số có giá trị từ 77 đến 78.Để kiểm tra xem một số có phải 30 hay không, bạn dùng hàm 24. Hàm 28 chuyển giá trị 29 thành dạng số, rồi trả về 38 nếu số đó là 30, ngược lại thì trả về 16.Để kiểm tra xem một số có phải số thông thường hay không, bạn dùng 25. Hàm 36 chuyển giá trị 29 thành dạng số, rồi trả về 38 nếu số đó khác 14, 15 và 30.Để chuyển đổi string thành dạng số, bạn có thể dùng hàm 60 hoặc hàm 61. Cả hai hàm này đều đọc string từ trái sang phải cho đến khi gặp kí tự không thỏa mãn thì dừng lại:
Đối tượng 83 có các phương thức giúp bạn thực hiện các phép toán số học với number trong JavaScript như: |