Làm thế nào để chuyển đổi chuỗi thành số trong javascript? | How to convert string to number in javascript?

Như hầu hết các bạn đã học qua JavaScript đều biết rằng biến trong nó là không tường minh, tức là không được xác định một kiểu dữ liệu trước khi truyền giá trị vào biến, bạn có thể truyền bất kỳ những gì bạn muốn. Tuy nhiên trong thực thế khi tính toán với JavaScript một số trường hợp bạn cần xác định rõ nó là kiểu số, ví dụ như bạn lấy 123 + 456 có thể bạn sẽ nhận được kết quả  là 123456 thay vì tổng 579 của nó.

Điều trên trên thực tế thực sự có xảy ra, điều này khẳng định qua việc JavaScript có hỗ trợ phương thức chuyển đổi kiểu dữ liệu thành số. Bài viết này sẽ hướng dẫn cách chuyển đổi dữ liệu thành kiểm số trong

Để chuyển đổi dữ liệu thành số ta sử dụng phép cộng (+) ở đằng trước dữ liệu cần chuyển đổi, trên thực tế là có nhiều cách chuyển đổi khác nhau nhưng đây là cách chuyển đổi chuẩn nhất được đưa ra từ JavaScript, ví dụ như sau:
var s = "12.34";
alert( +s );
→ Kết quả ta sẽ nhận được thông báo là "12.34"

Chuỗi S trong ví dụ trên sẽ được phân tích và nếu định dang của nó là số thì nó sẽ được trả về là kiểu số.

Trên thực tế JavaScription chấp nhận các phép toán toán học cộng, trừ, nhân, chia ( - * / ) đều có chức năng chuyển dữ liệu thành kiểu số, ví dụ như.
var a = "12.34";
var b = "2";
alert( a - b );
alert( a * b );
alert( a / b );
alert( a + b );

Tương ứng ta sẽ nhận được các kết quả như sau:
Đối với phép trừ: 10.34
Đối với phép nhân: 24.68
Đối với phép chia: 6.17
Đối với phép cộng: 12.342 (lưu ý)

Như các bạn thấy các giá trị kết trả về của phép trừ, nhân, chia đều đúng. Tuy nhiên đối với phép cộng lại ra sai, ví phép toán công ở trong JavaScript nó còn hiểu là phép cộng chuỗi nên kết quả ta nhận được là 12.342 là một chuỗi chứ không phải một số.

Và để khai báo biến được tường minh hơn ta nên dùng dấu cộng để chuyển đổi đổi biến thành số (number) trước khi tính toán như sau:
var a = +"12.34";
var b = +"2";
alert( a - b );
alert( a * b );
alert( a / b );
alert( a + b );

Lúc này tại phép công ta sẽ nhận được kết quả chính xác là 14.34 là kiểu số.

Thêm một điều khá thú vụ khi dùng phép cộng để chuyển đổi thì nó chấp nhập trong chuỗi có khoảng trắng dư thừa, nó sẽ tự động loại bỏ những khoảng trắng dư này đi ví dụ như:
var a = +"       12.34     ";
alert( a );
→ Kết quả nhận được sẽ là kiểu số 12.34 không có khoảng trắng dư.

Vậy trường hợp nếu dữ liệu không phải định dạng số hoặc có ký tự chữ thì khi dùng phép toán chuyển đổi thì nó sẽ như thế nào? Trong trường hợp này nó sẽ trả vết kết quả là NaN (Not a number) ví dụ như sau:
var a = +" 12.34 VNLIVES.NET ";
alert( a );
→ Kết quả ta nhận được sẽ là NaN

Bạn có thể sử dụng tính chất này để viết một hàm kiểm tra dữ liệu đầu vào là kiểu số (number) hay kiểu chuỗi (String) trong JavaScript bằng cách sử dụng isNaN().


No comments:

Post a Comment