Hướng dẫn how do i convert a string to a number in javascript? - làm cách nào để chuyển đổi một chuỗi thành một số trong javascript?

Có hai cách chính để chuyển đổi một chuỗi thành một số trong JavaScript. Một cách là phân tích nó và cách khác là thay đổi loại của nó thành một số. Tất cả các thủ thuật trong các câu trả lời khác (ví dụ: Unary Plus) liên quan đến việc ép buộc loại chuỗi thành một số. Bạn cũng có thể làm điều tương tự rõ ràng với hàm số.

Phân tích cú pháp

var parsed = parseInt("97", 10);

ParseInt và parsefloat là hai hàm được sử dụng để phân tích các chuỗi theo số. Phân tích cú pháp sẽ ngừng âm thầm nếu nó tấn công một ký tự mà nó không nhận ra, điều này có thể hữu ích cho các chuỗi phân tích cú pháp như "92px", nhưng nó cũng hơi nguy hiểm, vì nó sẽ không gây ra bất kỳ lỗi nào về đầu vào xấu, thay vào đó là bạn 'LL lấy lại nan trừ khi chuỗi bắt đầu với một số. Khoảng trắng ở đầu chuỗi bị bỏ qua. Đây là một ví dụ về nó làm một cái gì đó khác với những gì bạn muốn và không đưa ra dấu hiệu nào cho thấy bất cứ điều gì đã xảy ra

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97

Đó là thực tế tốt để luôn chỉ định radix là đối số thứ hai. Trong các trình duyệt cũ hơn, nếu chuỗi bắt đầu với 0, nó sẽ được hiểu là bát phân nếu radix không được chỉ định khiến nhiều người bất ngờ. Hành vi đối với thập lục phân được kích hoạt bằng cách bắt đầu chuỗi với 0x nếu không có radix được chỉ định, ví dụ:

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
3. Tiêu chuẩn thực sự đã thay đổi với Ecmascript 5, do đó các trình duyệt hiện đại không còn kích hoạt octal khi có 0 hàng đầu nếu không có radix nào được chỉ định. ParseInt hiểu các radixes lên đến cơ sở 36, trong trường hợp đó cả chữ cái trên và chữ thường được coi là tương đương.

Thay đổi loại chuỗi thành một số

Tất cả các thủ thuật khác được đề cập ở trên không sử dụng ParseInt, liên quan đến việc ép buộc chuỗi thành một số. Tôi thích làm điều này một cách rõ ràng,

var cast = Number("97");

Điều này có hành vi khác nhau đối với các phương thức phân tích cú pháp (mặc dù nó vẫn bỏ qua khoảng trắng). Nó nghiêm ngặt hơn: nếu nó không hiểu toàn bộ chuỗi hơn là nó trả về

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
4, vì vậy bạn không thể sử dụng nó cho các chuỗi như
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
5. Vì bạn muốn một số nguyên thủy thay vì một đối tượng trình bao bọc số, hãy đảm bảo bạn không đặt
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
6 trước hàm số.

Rõ ràng, việc chuyển đổi thành một số mang lại cho bạn một giá trị có thể là một float chứ không phải là một số nguyên, vì vậy nếu bạn muốn một số nguyên, bạn cần sửa đổi nó. Có một vài cách để làm điều này:

var rounded = Math.floor(Number("97.654"));  // other options are Math.ceil, Math.round
var fixed = Number("97.654").toFixed(0); // rounded rather than truncated
var bitwised = Number("97.654")|0;  // do not use for large numbers

Bất kỳ toán tử bitwise nào (ở đây tôi đã thực hiện một chút hoặc, nhưng bạn cũng có thể phủ định gấp đôi vì trong một câu trả lời trước đó hoặc bitshift) sẽ chuyển đổi giá trị thành số nguyên 32 bit và hầu hết chúng sẽ chuyển đổi thành số nguyên đã ký. Lưu ý rằng điều này sẽ không muốn bạn muốn cho các số nguyên lớn. Nếu số nguyên không thể được biểu diễn trong 32 tỷ, nó sẽ bọc.will not do want you want for large integers. If the integer cannot be represented in 32bits, it will wrap.

~~"3000000000.654" === -1294967296
// This is the same as
Number("3000000000.654")|0
"3000000000.654" >>> 0 === 3000000000 // unsigned right shift gives you an extra bit
"300000000000.654" >>> 0 === 3647256576 // but still fails with larger numbers

Để hoạt động chính xác với các số lớn hơn, bạn nên sử dụng các phương pháp làm tròn

Math.floor("3000000000.654") === 3000000000
// This is the same as
Math.floor(Number("3000000000.654"))

Hãy nhớ rằng Coeercion hiểu ký hiệu theo cấp số nhân và vô cùng, vì vậy

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
7 là
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
8 chứ không phải NAN, trong khi các phương pháp phân tích không.

Phong tục

Không chắc là một trong hai phương pháp này thực hiện chính xác những gì bạn muốn. Ví dụ, thông thường tôi sẽ muốn có một lỗi ném nếu phân tích cú pháp thất bại và tôi không cần hỗ trợ cho vô hạn, số mũ hoặc khoảng trắng hàng đầu. Tùy thuộc vào usecase của bạn, đôi khi thật hợp lý khi viết chức năng chuyển đổi tùy chỉnh.

Luôn kiểm tra xem đầu ra của số hay một trong các phương thức phân tích cú pháp là loại số bạn mong đợi. Bạn gần như chắc chắn sẽ muốn sử dụng

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
9 để đảm bảo số không phải là NAN (thường là cách duy nhất bạn phát hiện ra rằng phân tích cú pháp thất bại).

Hướng dẫn how do i convert a string to a number in javascript? - làm cách nào để chuyển đổi một chuỗi thành một số trong javascript?

Sanchithasr

Đăng vào ngày 16 tháng 12 năm 2020 • Cập nhật vào ngày 19 tháng 8 năm 2021

1. Sử dụng ParseInt ()

var cast = Number("97");
0 phân tích một chuỗi và trả về một số toàn bộ. Không gian được cho phép. Chỉ có số đầu tiên được trả về. Phương pháp này có một giới hạn mặc dù. Nếu bạn phân tích số thập phân, nó sẽ được làm tròn đến giá trị số nguyên gần nhất và giá trị đó được chuyển đổi thành chuỗi. Người ta có thể cần sử dụng phương pháp
var cast = Number("97");
1 để chuyển đổi theo nghĩa đen.
This method has a limitation though. If you parse the decimal number, it will be rounded off to the nearest integer value and that value is converted to string. One might need to use
var cast = Number("97");
1 method for literal conversion.

myString = '129' 
console.log(parseInt(myString)) // expected result: 129

a = 12.22
console.log(parseInt(a)) // expected result: 12

Nhập chế độ FullScreenen EXIT Mode FullScreen

2. Sử dụng số ()

var cast = Number("97");
2 có thể được sử dụng để chuyển đổi các biến JavaScript thành số. Chúng ta có thể sử dụng nó để chuyển đổi chuỗi quá. Nếu giá trị không thể được chuyển đổi thành một số,
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
4 sẽ được trả về.
If the value cannot be converted to a number,
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
4 is returned.

Number("10");          // returns 10
Number(" 10  ");       // returns 10
Number("10.33");       // returns 10.33

Nhập chế độ FullScreenen EXIT Mode FullScreen

3. Sử dụng toán tử Unary (+)

Toán tử Unary Plus (

var cast = Number("97");
4) đi trước toán hạng của nó và đánh giá cho toán hạng của nó nhưng cố gắng chuyển đổi nó thành một số, nếu nó chưa có.

const x = 25;
const y = -25;
console.log(+x); // expected output: 25
console.log(+y); // expected output: -25
console.log(+''); // expected output: 0

Nhập chế độ FullScreenen EXIT Mode FullScreen

4. Sử dụng parsefloat ()

var cast = Number("97");
1 phân tích một chuỗi và trả về một số. Không gian được cho phép. Chỉ có số đầu tiên được trả về.

parseFloat("10");        // returns 10
parseFloat("10.33");     // returns 10.33
parseFloat("10 20 30");  // returns 10
parseFloat("10 years");  // returns 10
parseFloat("years 10");  // returns NaN

Nhập chế độ FullScreenen EXIT Mode FullScreen

5. Sử dụng Math.Floor ()

Hàm

var cast = Number("97");
6 trả về số nguyên lớn nhất hoặc bằng một số nhất định. Điều này có thể là một chút khó khăn với các số thập phân vì nó sẽ trả về giá trị của số nguyên gần nhất là số.

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
0

Nhập chế độ FullScreenen EXIT Mode FullScreen

6. Nhân với số

Nhân giá trị chuỗi với

var cast = Number("97");
7 đã giành được giá trị thay đổi giá trị và nó cũng sẽ được chuyển đổi thành số theo mặc định.

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
1

Nhập chế độ FullScreenen EXIT Mode FullScreen

7. Double Tilde (~ ~) Nhà điều hành

Chúng ta có thể sử dụng toán tử Tilde kép để chuyển đổi chuỗi thành số.

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
2

Nhập chế độ FullScreenen EXIT Mode FullScreen

Dưới đây là so sánh các cách đề cập đến hiệu suất khôn ngoan. Nhận xét dưới đây nếu bạn biết nhiều phương pháp hơn. Cảm ơn
Thank You

Làm cách nào để chuyển đổi một chuỗi thành một số?

Bạn chuyển đổi một chuỗi thành một số bằng cách gọi phương thức parse hoặc tryparse được tìm thấy trên các loại số (int, dài, gấp đôi, v.v.) hoặc bằng cách sử dụng các phương thức trong lớp System.convert.Nó hiệu quả hơn một chút và đơn giản để gọi phương thức tryparse (ví dụ: int.by calling the Parse or TryParse method found on numeric types ( int , long , double , and so on), or by using methods in the System. Convert class. It's slightly more efficient and straightforward to call a TryParse method (for example, int.

Làm thế nào để bạn chuyển đổi một cái gì đó thành một số trong JavaScript?

Phương thức số () chuyển đổi một giá trị thành một số.Nếu giá trị không thể được chuyển đổi, NAN được trả lại. converts a value to a number. If the value cannot be converted, NaN is returned.

Làm cách nào để chuyển đổi một chuỗi thành một số trong TypeScript?

Trong TypeScript, có rất nhiều cách để chuyển đổi một chuỗi thành một số.Chúng ta có thể sử dụng toán tử '+' unary, number (), parseInt () hoặc parseFloat () để chuyển đổi chuỗi thành số.use the '+' unary operator , Number(), parseInt() or parseFloat() function to convert string to number.

Cách nhanh nhất để chuyển đổi một chuỗi thành một số là gì?

Sử dụng hàm parseInt () để chuyển đổi một chuỗi thành một số, ví dụ:const num1 = parseInt (str). to convert a string to a number, e.g. const num1 = parseInt(str) .