Trong hướng dẫn này, chúng tôi sẽ giải thích Số JavaScript. bất động sản EPSILON. Nó biểu thị sự khác biệt giữa 1 và số dấu phẩy động nhỏ nhất lớn hơn 1. Nó tồn tại bởi vì không phải tất cả các số thập phân đều có thể được biểu diễn chính xác và chính xác trong hệ thống nhị phân Show Mục lục Vấn đề độ chính xác của dấu phẩy độngCác máy tính sử dụng hệ thống nhị phân để lưu trữ các số và sử dụng số học dấu phẩy động, trong khi trong thế giới thực, chúng tôi sử dụng hệ thống thập phân. Không phải tất cả các số thập phân đều có thể được biểu diễn chính xác dưới dạng số nhị phân Ví dụ
Trường hợp trên tương tự như cách 1/3 ( 0. 33333) không thể được biểu diễn chính xác ở dạng thập phân Số thập phân 10 được biểu diễn dưới dạng 1010 ở dạng nhị phân. Bây giờ chia 1 cho 1010 và bạn sẽ thấy rằng phép chia kéo dài mãi mãi giống như 1/3 Do sự mất độ chính xác ở trên xảy ra, kết quả kỳ lạ như sau xảy ra 1 2 3 4 5 6 7 8 9 10
bảng điều khiển. log(0. 1 + 0. 2); bảng điều khiển. log(0. 2 + 0. 4); bảng điều khiển. log(0. 2 + 0. 7);
//đầu ra //0. 30000000000000004 //0. 6000000000000001 //0. 8999999999999999
Sự khác biệt là rất nhỏ, nhưng điều này chắc chắn gây ra vấn đề khi bạn so sánh hai kết quả. Ví dụ, các kết quả sau đây là 1 2 3 4 5 6
bảng điều khiển. log((0. 1 + 0. 2) == . 3);
//đầu ra //SAI
Con số. EPSILONMột trong những cách để tránh những vấn đề như vậy là sử dụng một con số rất nhỏ làm dung sai để so sánh. Nếu sự khác biệt giữa các số được so sánh nhỏ hơn dung sai, thì chúng được coi là bằng nhau JavaScript cung cấp thuộc tính tĩnh 1 2 3 4 5 6
bảng điều khiển. log(Số. EPSILON)
//đầu ra //2. 220446049250313e-16
Nếu hiệu giữa hai số nhỏ hơn 1 2 3 4 5 6 7
function numberEquals(x. số, y. số) { trả về Toán. abs(x - y . ) < Number.EPSILON; }
bảng điều khiển. log(numberEquals(0. 1 + 0. 2, 0. 3)); // true
Số____7_______ là một , , và thuộc tính Bản tóm tắtViệc chuyển đổi từ số thập phân sang nhị phân không phải lúc nào cũng chính xác. Nó có thể dẫn đến mất độ chính xác. Rõ ràng là khi bạn so sánh hai số (ví dụ:. Tại sao 0. 1 0. 2 không phải là 0. 3 JavaScript?Trong trường hợp 0. 1 + 0. 2 , máy tính tính ra kết quả là 0. 30000000000000004 , không chính xác bằng 0. 3. Đây chỉ là giả tạo về cách các số được biểu diễn trong máy tính và không phản ánh bất kỳ lỗi nào trong mã JavaScript .
Làm cách nào để định dạng float đến 2 chữ số thập phân trong JavaScript?Để giới hạn số chữ số tối đa 2 vị trí sau dấu thập phân, phương thức toFixed() được sử dụng. Phương thức toFixed() làm tròn số dấu phẩy động lên đến 2 vị trí sau dấu thập phân.
Độ chính xác của chữ số trong JavaScript là gì?Loại JavaScript Number là định dạng nhị phân 64 bit có độ chính xác kép, giá trị IEEE 754 , giống như double trong Java hoặc C#.
Làm cách nào để có được giá trị chính xác trong JavaScript?toPrecision() Phương thức toPrecision() trả về một chuỗi đại diện cho đối tượng Number với độ chính xác đã chỉ định. |