Đầu ra của 0,1 0,2 trong javascript là gì?

Tôi đang sử dụng Javascript để hiển thị điều này nhưng so sánh dấu phẩy động này cũng có thể được nhìn thấy trong các ngôn ngữ lập trình khác, nơi chúng cũng trả về false cho so sánh này

Mã ví dụ -

console.log(0.1 + 0.2 === 0.3)
//output - false

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

  • Nó trả về false nhưng 0. 1 + 0. 2 = 0. 3 thì tại sao nó không trả về đúng?
  • Chà Những số dấu phẩy động này không thể được biểu diễn chính xác trong số dấu phẩy động Cơ sở 2. Giải thích về khái niệm cơ sở 2 này khá phức tạp để hiển thị nhưng tôi sẽ chỉ cho bạn lý do đơn giản tại sao nó lại xảy ra

console.log(0.1 + 0.2)
// output - 0.30000000000000004

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

  • Đầu ra thực tế của 2 số đó là 0. 30000000000000004 đó là lý do tại sao nó trả về sai vì chúng tôi đang so sánh điều này

console.log(0.3 === 30000000000000004)
// false

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

  • Bây giờ bạn đã hiểu tại sao nó trả về false

console.log(0.1 + 0.2 === 0.30000000000000004)
//output - true

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

  • Lần này nó sẽ trả về true

CẢM ƠN BẠN ĐÃ XEM BÀI VIẾT NÀY ❤❤

Bạn có thể liên hệ với tôi trên -
Instagram-https. //www. instagram. com/supremacism__shubh/
LinkedIn - https. //www. linkin. com/trong/shubham-tiwari-b7544b193/
Email - shubhmtiwri00@gmail. com

^^ Bạn có thể giúp tôi bằng cách quyên góp tại liên kết bên dưới Cảm ơn bạn👇👇 ^^
☕ -> https. //www. muameacoffee. com/waaduheck <--

Cũng kiểm tra những bài viết này là tốt
https. // nhà phát triển. to/shubhamtiwari909/js-push-and-pop-with-arrays-33a2/chỉnh sửa

https. // nhà phát triển. to/shubhamtiwari909/tostring-in-js-27b

https. // nhà phát triển. to/shubhamtiwari909/join-in-javascript-4050

https. // nhà phát triển. đến/shubhamtiwari909/đi sâu vào mảng-sort-js-2n90

Khi chuyển đổi các giá trị Số thành chuỗi trong JavaScript, mặc định là chỉ sử dụng đủ các chữ số để phân biệt duy nhất giá trị Number. 1 Điều này có nghĩa là khi một số được hiển thị là “0. 1”, điều đó không có nghĩa là nó chính xác bằng 0. 1, chỉ là nó gần với 0 hơn. 1 hơn bất kỳ giá trị Số nào khác, vì vậy chỉ hiển thị “0. 1” cho bạn biết đó là giá trị Số duy nhất này, là 0. 1000000000000000055511151231257827021181583404541015625. Chúng ta có thể viết điều này trong ký hiệu dấu phẩy động thập lục phân là 0x1. 999999999999ap-4. (______________ có nghĩa là nhân chữ số thập lục phân trước đó với hai lũy thừa của −4, vì vậy các nhà toán học sẽ viết nó là 1. 99999999999916 • 2−4. )

Dưới đây là các giá trị xuất hiện khi bạn viết 0.1, 0.20.3 trong mã nguồn và chúng được chuyển đổi sang định dạng Số của JavaScript

  • 0. 1 → 0x1. 999999999999ap-4 = 0. 1000000000000000055511151231257827021181583404541015625
  • 0. 2 → 0x1. 999999999999ap-3 = 0. 200000000000000011102230246251565404236316680908203125
  • 3 → 0x1. 3333333333333p-2 = 0. 2999999999999999988897769753748434595763683319091796875

Khi chúng tôi đánh giá 0.1 + 0.2, chúng tôi đang thêm 0x1. 999999999999ap-4 và 0x1. 999999999999ap-3. Để thực hiện điều đó theo cách thủ công, trước tiên chúng ta có thể điều chỉnh sau bằng cách nhân ý nghĩa của nó (phần phân số) với 2 và trừ đi một từ số mũ của nó, tạo ra 0x3. 3333333333334p-4. (Bạn phải làm phép tính này ở dạng thập lục phân. A16 • 2 = 1416 nên chữ số tận cùng là 4 và chữ số 1 được mang. Sau đó, 916 • 2 = 1216 và 1 được thực hiện là 1316. Điều đó tạo ra 3 chữ số và 1 mang. ) Bây giờ chúng ta có 0x1. 999999999999ap-4 và 0x3. 3333333333334p-4 và chúng tôi có thể thêm chúng. Điều này tạo ra 4. cccccccccccccep-4. Đó là kết quả toán học chính xác, nhưng nó có quá nhiều bit cho định dạng Số. Chúng tôi chỉ có thể có 53 bit trong ý nghĩa và. Có 3 bit trong số 4 (1002) và 4 bit trong mỗi 13 chữ số ở cuối, do đó tổng cộng là 55 bit. Máy tính phải loại bỏ 2 bit và làm tròn kết quả. Chữ số cuối cùng, E16, là 11102, vì vậy 10 bit phải đi. Các bit này chính xác bằng ½ của bit trước đó, do đó, đây là sự ràng buộc giữa làm tròn lên hoặc xuống. Quy tắc phá vỡ các mối quan hệ nói rằng làm tròn để bit cuối cùng là số chẵn, vì vậy chúng tôi làm tròn lên để làm cho 11 bit trở thành 100. E16 trở thành 1016, dẫn đến chuyển sang chữ số tiếp theo. kết quả là 4. cccccccccccd0p-4, bằng 0. 3000000000000000444089209850062616169452667236328125

Bây giờ chúng ta có thể thấy tại sao in ấn .1 + .2 hiển thị “0. 30000000000000004” thay vì “0. 3”. Đối với giá trị Số 0. 299999999999999988897769753748434595763683319091796875, JavaScript hiển thị “0. 3”, vì Số đó gần với 0 hơn. 3 hơn bất kỳ số nào khác là. Nó khác 0. 3 khoảng 1. 1 ở chữ số thứ 17 sau dấu thập phân, trong khi kết quả của phép cộng chúng ta có khác 0. 3 nhân khoảng 4. 4 ở chữ số thứ 17. Vì thế

  • Mã nguồn 0.3 tạo ra 0. 299999999999999988897769753748434595763683319091796875 và được in thành “0. 3”
  • Mã nguồn 0.1 + 0.2 tạo ra 0. 3000000000000000444089209850062616169452667236328125 và được in là “0. 30000000000000004”

Bây giờ hãy xem xét 0.2 + 0.2. Kết quả của việc này là 0. 40000000000000002220446049250313080847263336181640625. Đó là số gần 0 nhất. 4, vì vậy JavaScript in nó là “0. 4"

Cuối cùng, hãy xem xét p-40. Chúng tôi đang thêm 0x1. 999999999999ap-3 và 0x1. 3333333333333p-2. Một lần nữa, chúng tôi điều chỉnh toán hạng thứ hai, tạo ra 0x2. 6666666666666p-3. Sau đó, thêm sản xuất 0x4. 0000000000000p-3, là 0x1p-1, là ½ hoặc 0. 5. Vì vậy, nó được in là “0. 5”

chúng ta có thể chắc chắn rằng 0. 1 0. 2 sẽ là 0. 3 trong JavaScript?

Biểu thức 0. 1 + 0. 2 === 0. 3 trả về false trong JavaScript , nhưng may mắn thay, số học số nguyên trong dấu phẩy động là chính xác, vì vậy có thể tránh được lỗi biểu diễn thập phân bằng cách chia tỷ lệ.

0 là bao nhiêu. 1 0. 2 trong lập trình?

Cộng cả hai sau khi làm cho số mũ giống nhau cho cả hai sẽ cho chúng ta. Khi được biểu diễn ở dạng dấu phẩy động, điều này trở thành. Điều này được đại diện bởi 0. 1 + 0. 2. Đó chính xác là lý do đằng sau việc nhận được 0. 1 + 0. 2 = 0. 30000000000000004 .

đầu ra của 0 là gì. 1 0. 2 == 0. 3 trong JavaScript?

Với phân số thập phân, hệ thống số dấu phẩy động này gây ra một số lỗi làm tròn trong JavaScript. Ví dụ: 0. 1 và 0. 2 không thể được biểu diễn chính xác. Do đó, 0. 1 + 0. 2 === 0. 3 kết quả false .

Tại sao 0. 1 cộng 0. 2 không bằng 0. 3 js?

Tùy thuộc vào số lượng bit chính xác có sẵn , các xấp xỉ dấu phẩy động của 0. 1 và 0. 2 có thể nhỏ hơn hoặc lớn hơn một chút so với các biểu diễn thập phân tương ứng, nhưng không bao giờ bằng. Vì thực tế đó, bạn sẽ không bao giờ có 0. 1+0. 2 == 0. 3.