chuyển đổi một biến chuỗi JavaScript thành thập phân / tiền


114

Làm cách nào chúng ta có thể chuyển đổi một biến chuỗi JavaScript thành số thập phân?

Có một chức năng như:

parseInt(document.getElementById(amtid4).innerHTML)

Câu trả lời:


240

Có - parseFloat.

parseFloat(document.getElementById(amtid4).innerHTML);

Để định dạng số, hãy sử dụng toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num bây giờ là một chuỗi với số được định dạng với hai chữ số thập phân.


1
Chúng ta có thể làm cho biến đó có 2 dấu thập phân như 120,50 không? ngay bây giờ tôi chỉ nhận được 120,5.
Varada

16
Để trích dẫn @PhilipWhitehouse "Xin vui lòng, đối với bất kỳ ai đọc bài này trong tương lai, không sử dụng float để lưu trữ tiền tệ. Bạn sẽ mất độ chính xác và dữ liệu. Bạn nên lưu trữ nó dưới dạng số nguyên xu (hoặc xu, v.v.) rồi chuyển đổi trước Đến đầu ra.". Nguồn: stackoverflow.com/questions/149055/…
SSH

@SSHThis Theo như tôi biết thì JavaScript không có kiểu số nguyên. Nó chỉ có một loại Số mà tất cả được lưu trữ bên trong dưới dạng số dấu phẩy động 64 bit. Điểm của bạn hợp lệ cho các ngôn ngữ khác có kiểu số nguyên như C #, C ++, nhưng không thực sự cho JavaScript.
Simon Brangwin

1
@SimonBrangwin Quan điểm của anh ấy vẫn có giá trị, nhưng ngữ nghĩa có thể gây nhầm lẫn. Ý của anh ấy thực sự là "chỉ lưu trữ tiền tệ dưới dạng số nguyên trong javascript vì chúng sẽ được lưu trữ dưới dạng số dấu phẩy động".
Josh Noe

1
Chỉ cần một lời nhắc nhở: parseFloat('22w')22parseFloat('w22')NaN
IG Pascual

65

Bạn cũng có thể sử dụng hàm Numbertạo / hàm (không cần cơ số và có thể sử dụng được cho cả số nguyên và số thực):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

Ngoài ra, như Andy E đã nói trong phần nhận xét, bạn có thể sử dụng +để chuyển đổi

+'09'; /=> 9
+'09.0987'; /=> 9.0987

Tính năng này không được hỗ trợ bởi IE11
Pants

@Pants đó là về Extensions đến Số built-in đối tượng trong ES6 , không phải về việc có thể sử dụngNumber
KooiInc

11

Những công việc này:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

Việc dựa vào các hàm javascript để so sánh và chơi với các con số là khá rủi ro. Trong javascript (0,1 + 0,2 == 0,3) sẽ trả về false do lỗi làm tròn. Sử dụng thư viện math.js.


1

Một cách viết tay ngắn gọn dễ dàng sẽ là sử dụng + x Nó giữ nguyên dấu hiệu cũng như các số thập phân. Cách thay thế khác là sử dụng parseFloat (x). Sự khác biệt giữa parseFloat (x) và + x là đối với một chuỗi trống + x trả về 0 trong khi parseFloat (x) trả về NaN.


1

Tôi đã tạo một hàm trợ giúp nhỏ để thực hiện việc này và bắt tất cả dữ liệu không đúng định dạng

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

Demo ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.