Blog#49: Tại sao trong JavaScript parseInt(0,0000005) kết quả lại là “5” 😊 (Series: Bí kíp Javascript – PHẦN 40)

Mình là TUẤN hiện đang là một Full-stack Developer tại Tokyo 😊. Nếu bạn thấy Blog này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé 😉. Tại sao trong JavaScript parseInt(0.0000005) === 5😱? Một câu hỏi tuyệt vời! parseInt(0.0000005), output mà các bạn mong chờ là 0, nhưng

image.png

Mình là TUẤN hiện đang là một Full-stack Developer tại Tokyo 😊.
Nếu bạn thấy Blog này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé 😉.

Tại sao trong JavaScript parseInt(0.0000005) === 5😱? Một câu hỏi tuyệt vời!

parseInt(0.0000005), output mà các bạn mong chờ là 0, nhưng tại sao nó lại là 5? Hãy cùng nhau tìm hiểu vấn đề này.

1. Khi nào thì sử dụng parseInt?

Trước hết, bạn thường sử dụng khi parseInt ở đâu và khi nào? Hầu hết, chúng ta sử dụng nó để parse - phân tích một chuỗi và trả về một số nguyên tương ứng của nó.

2. Về hàm parseInt

Theo tài liệu của MDN, “parseInt(string, radix) phân tích đối số string và trả về một số nguyên với cơ số đã chỉ định (radix là cơ số trong TOÁN mà ae đã học hồi cấp 3).”

Cú pháp

parseInt(string)parseInt(string, radix)

Ồ vậy thì có lẽ một phần của câu trả lời ở đây. Tức là khi ae xài cái hàm này mà ko cung cấp tham số thứ 2 (cơ số) -> nó sẽ là mặc định. Nếu đã là mặc định thì nó có thể là một số nào đó mà ae chưa biết hoặc phải đọc tài liệu mới biết. Nên việc ae ko lường trước được giá trị trả về của nó là chuyện rất bình thường.

Test phát xem sao

parseInt('0.5')// 0  parseInt('0.5')// 0  parseInt('0.05')// 0  parseInt('0.005')// 0  parseInt('0.0005')// 0  parseInt('0.00005')// 0  parseInt('0.000005')// 0  parseInt('015')// 15  parseInt('015',8)// 13  parseInt('15px',10)// 15

Vậy là cái radix này ảnh hưởng đến kết quả phết nhở 😄

3. Làm thế nào để parseInt chuyển đổi string sang number?

Khi tham số đầu tiên của parseInt là một số, thì nó phân tích cú pháp như thế nào?

Sự thật của parseInt(0.0000005) === 5 cũng là đây …

3.1. Bước đầu tiên? Chuyển đổi số thành một chuỗi.

Sử dụng hàm String để xem output của mỗi giá trị trả về là gì:

// Tất cả đều được chuyển thành chuỗi hếtString(0.5);// => '0.5'String(0.05);// => '0.05'String(0.005);// => '0.005'String(0.0005);// => '0.0005' String(0.00005);// => '0.00005'String(0.000005);// => '0.000005'String(0.0000005);// => '5e-7' Chú ý ở đây nhé

3.2. Bước thứ hai là thực hiện thao tác làm tròn số.

“Khi chúng ta sử dụng parseInt(0.0000005), nó bằng sẽ bằng parseInt('5e-7').

parseInt chỉ có thể phân tích phần đầu của chuỗi dưới dạng giá trị số nguyên; nó bỏ qua bất kỳ đơn vị nào không thể được hiểu là một phần của ký hiệu số nguyên.

parseInt(0,0000005)// 5parseInt('5e-7')// 5// Nó tương tự nhưparseInt('15px',10)// 15

Cuối cùng, câu trả lời sẽ chỉ trả về 5 vì đó là ký tự duy nhất là một số cho đến một ký tự không phải là e, vì vậy phần còn lại của nó e-7 sẽ bị loại bỏ.”

4. Cách lấy phần nguyên của một số có dấu phẩy động một cách an toàn?

Nên sử dụng hàm Math.floor() sau:

Math.floor(0.5);// => 0
Math.floor(0.05);// => 0
Math.floor(0.005);// => 0
Math.floor(0.0005);// => 0
Math.floor(0.00005);// => 0
Math.floor(0.000005);// => 0
Math.floor(0.0000005);// => 0

5. Roundup

Bây giờ, bạn có thể giải thích tại sao parseInt(99999999999999999999999999) lại bằng 1 không?

Như mọi khi, mình hy vọng bạn thích bài viết này và học thêm được điều gì đó mới.

Cảm ơn và hẹn gặp lại các bạn trong những bài viết tiếp theo! 😍

Nếu bạn thấy Blog này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé. Thank you.😉

6. Ref

https://tuan200tokyo.blogspot.com/2022/11/blog49-tai-sao-trong-javascript.html

Nguồn: viblo.asia

Bài viết liên quan

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp

SEO Mũ Trắng, Mũ Đen, Mũ Xám: Hiểu Biết và Lựa Chọn Phù Hợp Trong kỷ nguyên s