Tiếp theo & nbsp; »
159/1956
«& Nbsp; trước
Sự mô tả
Mã sau đây cho thấy cách chuyển đổi chuỗi trống [""] thành 0.
Thí dụ
var num = Number[""]
document.writeln[num];
Bấm để xem bản demo
Mã trên tạo ra kết quả sau.
Tiếp theo & nbsp; »
«& Nbsp; trước
Thay vì kludging nó để bạn có thể tiếp tục, tại sao không sao lưu và tự hỏi tại sao bạn lại chạy vào NAN ngay từ đầu?
Nếu bất kỳ đầu vào số nào cho hoạt động là NAN, đầu ra cũng sẽ là NAN. Đó là cách mà tiêu chuẩn điểm nổi hiện tại của IEEE hoạt động [nó không chỉ là JavaScript]. Hành vi đó là vì một lý do chính đáng: ý định cơ bản là để bạn không sử dụng kết quả không có thật mà không nhận ra đó là không có thật.
Cách thức hoạt động của NAN là nếu có điều gì đó không ổn trong một số hoạt động phụ trợ phụ [tạo ra NAN ở cấp độ thấp hơn], kết quả cuối cùng cũng sẽ là NAN, bạn sẽ nhận ra ngay lập tức là một lỗi ngay cả khi Logic xử lý lỗi [ném/bắt có thể?] Vẫn chưa hoàn thành.
Nan là kết quả của một phép tính số học luôn cho thấy một cái gì đó đã trở nên tồi tệ trong các chi tiết của số học. Đó là một cách để máy tính nói "gỡ lỗi cần thiết ở đây". Thay vì tìm cách nào đó để tiếp tục với một số số mà hầu như không đúng [là 0 thực sự là những gì bạn muốn?], Tại sao không tìm thấy vấn đề và khắc phục nó.
Một vấn đề phổ biến trong JavaScript là cả parseInt[...]
và parseFloat[...]
sẽ trả lại NAN nếu đưa ra một đối số vô nghĩa [null
, ''
, v.v.]. Khắc phục sự cố ở cấp độ thấp nhất có thể thay vì ở cấp độ cao hơn. Sau đó, kết quả của tính toán tổng thể có cơ hội tốt để có ý nghĩa và bạn không thay thế một số số ma thuật [0 hoặc 1 hoặc bất cứ điều gì] cho kết quả của toàn bộ tính toán. [Thủ thuật của [parseInt [foo.value] |
Có lẽ để dễ dàng mã hóa, bạn muốn có một hàm để lấy giá trị từ người dùng, làm sạch nó và cung cấp giá trị mặc định nếu cần thiết, như thế này:
function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
Đây là một bài đăng nhanh để hiển thị các ví dụ về 7 cách khác nhau để chuyển đổi một chuỗi thành một số trong JavaScript cùng với đầu ra mà mỗi người đưa ra cho các giá trị khác nhau.
Con số[]
Hàm Number[]
chấp nhận tham số chuỗi và chuyển đổi nó thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN
[không phải là số] nếu giá trị đầu vào không đại diện cho một số. Một điều thú vị cần lưu ý là số 0 [0
] được trả về cho một chuỗi trống [____10].
Cách để kiểm tra xem giá trị có bằng NaN
là sử dụng hàm
function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
2 không.
ParseInt []
Hàm
function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
3 chấp nhận tham số chuỗi và chuyển đổi nó thành số nguyên hoặc trả về NaN
[không phải là số] nếu giá trị đầu vào không đại diện cho một số. Nếu chuỗi đầu vào bắt đầu bằng một số [ví dụ: function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
5] thì function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
3 sẽ trả về số từ đầu chuỗi [ví dụ: function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
7]. Nếu đầu vào là một chuỗi trống [function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
0] thì NaN
[không phải là số] được trả về.
parsefloat []
Hàm
// Number
set['number1', Number['123']];
set['number2', Number['12.5']];
set['number3', Number['123abc']];
set['number4', Number['abc']];
set['number5', Number['']];
// parseInt
set['parseInt1', parseInt['123']];
set['parseInt2', parseInt['12.5']];
set['parseInt3', parseInt['123abc']];
set['parseInt4', parseInt['abc']];
set['parseInt5', parseInt['']];
// parseFloat
set['parseFloat1', parseFloat['123']];
set['parseFloat2', parseFloat['12.5']];
set['parseFloat3', parseFloat['123abc']];
set['parseFloat4', parseFloat['abc']];
set['parseFloat5', parseFloat['']];
// unary plus operator [+]
set['unaryPlus1', +'123'];
set['unaryPlus2', +'12.5'];
set['unaryPlus3', +'123abc'];
set['unaryPlus4', +'abc'];
set['unaryPlus5', +''];
// multiply by 1 [* 1]
set['multiply1', '123' * 1];
set['multiply2', '12.5' * 1];
set['multiply3', '123abc' * 1];
set['multiply4', 'abc' * 1];
set['multiply5', '' * 1];
// Math.round
set['mathRound1', Math.round['123']];
set['mathRound2', Math.round['12.5']];
set['mathRound3', Math.round['123abc']];
set['mathRound4', Math.round['abc']];
set['mathRound5', Math.round['']];
// Math.floor
set['mathFloor1', Math.floor['123']];
set['mathFloor2', Math.floor['12.5']];
set['mathFloor3', Math.floor['123abc']];
set['mathFloor4', Math.floor['abc']];
set['mathFloor5', Math.floor['']];
function set[id, value] {
document.getElementById[id].innerHTML = value;
}
0 chấp nhận tham số chuỗi và chuyển đổi nó thành số điểm nổi [với một điểm thập phân nếu được yêu cầu] hoặc trả về NaN
[không phải số] nếu giá trị đầu vào không đại diện cho một số. Nếu chuỗi đầu vào bắt đầu bằng một số [ví dụ: function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
5] thì function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
3 sẽ trả về số từ đầu chuỗi [ví dụ: function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
7]. Nếu đầu vào là một chuỗi trống [function getFoobarFromUser[elementid] {
var foobar = parseFloat[document.getElementById[elementid].innerHTML]
if [isNaN[foobar]] foobar = 3.21; // default value
return[foobar.toFixed[2]];
}
0] thì NaN
[không phải là số] được trả về.
Nhà điều hành Unary Plus [+]
Toán tử Unary Plus [
// Number
set['number1', Number['123']];
set['number2', Number['12.5']];
set['number3', Number['123abc']];
set['number4', Number['abc']];
set['number5', Number['']];
// parseInt
set['parseInt1', parseInt['123']];
set['parseInt2', parseInt['12.5']];
set['parseInt3', parseInt['123abc']];
set['parseInt4', parseInt['abc']];
set['parseInt5', parseInt['']];
// parseFloat
set['parseFloat1', parseFloat['123']];
set['parseFloat2', parseFloat['12.5']];
set['parseFloat3', parseFloat['123abc']];
set['parseFloat4', parseFloat['abc']];
set['parseFloat5', parseFloat['']];
// unary plus operator [+]
set['unaryPlus1', +'123'];
set['unaryPlus2', +'12.5'];
set['unaryPlus3', +'123abc'];
set['unaryPlus4', +'abc'];
set['unaryPlus5', +''];
// multiply by 1 [* 1]
set['multiply1', '123' * 1];
set['multiply2', '12.5' * 1];
set['multiply3', '123abc' * 1];
set['multiply4', 'abc' * 1];
set['multiply5', '' * 1];
// Math.round
set['mathRound1', Math.round['123']];
set['mathRound2', Math.round['12.5']];
set['mathRound3', Math.round['123abc']];
set['mathRound4', Math.round['abc']];
set['mathRound5', Math.round['']];
// Math.floor
set['mathFloor1', Math.floor['123']];
set['mathFloor2', Math.floor['12.5']];
set['mathFloor3', Math.floor['123abc']];
set['mathFloor4', Math.floor['abc']];
set['mathFloor5', Math.floor['']];
function set[id, value] {
document.getElementById[id].innerHTML = value;
}
7] được đặt trước khi chuỗi chuyển đổi nó thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN
[không phải số] nếu giá trị đầu vào không đại diện cho một số. Giống như hàm Number[]
, nó trả về 0 [0
] cho một chuỗi trống [parseInt[...]
1].
Nhân với 1 [* 1]
Nhân một chuỗi với 1 [parseInt[...]
2] hoạt động giống như toán tử Unary Plus ở trên, nó chuyển đổi chuỗi thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN
[không phải số] nếu giá trị đầu vào không đại diện cho số. Giống như hàm Number[]
, nó trả về 0 [0
] cho một chuỗi trống [parseInt[...]
6].
Math.round []
Phương thức parseInt[...]
7 chấp nhận tham số chuỗi và chuyển đổi nó thành một số nguyên được làm tròn thành số toàn bộ gần nhất, ví dụ parseInt[...]
8 được chuyển đổi thành parseInt[...]
9 và parseFloat[...]
0 được chuyển đổi thành parseFloat[...]
1. Nó trả về NaN
[không phải là một số] nếu giá trị đầu vào không đại diện cho một số và như Number[]
, nó trả về 0 [0
] cho một chuỗi trống [parseFloat[...]
5].
Math.Floor []
Phương thức parseFloat[...]
6 chấp nhận tham số chuỗi và chuyển đổi nó thành một số nguyên được làm tròn xuống tổng số thấp nhất, ví dụ parseFloat[...]
7 được chuyển đổi thành parseInt[...]
9. Nó trả về NaN
[không phải là một số] nếu giá trị đầu vào không đại diện cho một số và như Number[]
, nó trả về 0 [0
] cho một chuỗi trống [null
2].
Ở đây họ đang hoạt động: [Chỉnh sửa trên Stackblitz tại //stackblitz.com/edit/vanilla-js-ways-to-convert-a-string-to-a-number][Edit on StackBlitz at //stackblitz.com/edit/vanilla-js-ways-to-convert-a-string-to-a-number]
JavaScript chuyển đổi chuỗi thành mã số
Đây là mã JavaScript chạy trong ví dụ trên.
// Number
set['number1', Number['123']];
set['number2', Number['12.5']];
set['number3', Number['123abc']];
set['number4', Number['abc']];
set['number5', Number['']];
// parseInt
set['parseInt1', parseInt['123']];
set['parseInt2', parseInt['12.5']];
set['parseInt3', parseInt['123abc']];
set['parseInt4', parseInt['abc']];
set['parseInt5', parseInt['']];
// parseFloat
set['parseFloat1', parseFloat['123']];
set['parseFloat2', parseFloat['12.5']];
set['parseFloat3', parseFloat['123abc']];
set['parseFloat4', parseFloat['abc']];
set['parseFloat5', parseFloat['']];
// unary plus operator [+]
set['unaryPlus1', +'123'];
set['unaryPlus2', +'12.5'];
set['unaryPlus3', +'123abc'];
set['unaryPlus4', +'abc'];
set['unaryPlus5', +''];
// multiply by 1 [* 1]
set['multiply1', '123' * 1];
set['multiply2', '12.5' * 1];
set['multiply3', '123abc' * 1];
set['multiply4', 'abc' * 1];
set['multiply5', '' * 1];
// Math.round
set['mathRound1', Math.round['123']];
set['mathRound2', Math.round['12.5']];
set['mathRound3', Math.round['123abc']];
set['mathRound4', Math.round['abc']];
set['mathRound5', Math.round['']];
// Math.floor
set['mathFloor1', Math.floor['123']];
set['mathFloor2', Math.floor['12.5']];
set['mathFloor3', Math.floor['123abc']];
set['mathFloor4', Math.floor['abc']];
set['mathFloor5', Math.floor['']];
function set[id, value] {
document.getElementById[id].innerHTML = value;
}
Đăng ký kênh YouTube của tôi hoặc theo dõi tôi trên Twitter, Facebook hoặc GitHub để được thông báo khi tôi đăng nội dung mới.
Tôi hiện đang cố gắng đi du lịch khắp nước Úc bằng xe máy với vợ tôi Tina trên một cặp Hoàng gia Enfield Himalayans. Bạn có thể theo dõi cuộc phiêu lưu của chúng tôi trên YouTube, Instagram và Facebook.