mengonversi variabel string JavaScript menjadi desimal / uang

114

Bagaimana kita bisa mengubah variabel string JavaScript menjadi desimal?

Apakah ada fungsi seperti:

parseInt(document.getElementById(amtid4).innerHTML)
Varada
sumber

Jawaban:

240

Ya - parseFloat.

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

Untuk memformat angka, gunakan toFixed:

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

num sekarang menjadi string dengan bilangan yang diformat dengan dua tempat desimal.

lonesomeday
sumber
1
Bisakah kita membuat variabel itu dengan 2 koma desimal seperti 120,50? saat ini saya hanya mendapatkan 120,5.
Varada
16
Mengutip @PhilipWhitehouse "Tolong, kepada siapa pun yang membaca ini di masa mendatang, jangan gunakan float untuk menyimpan mata uang. Anda akan kehilangan presisi dan data. Anda harus menyimpannya sebagai bilangan bulat dari sen (atau sen, dll.) Dan kemudian mengonversi sebelumnya ke keluaran. ". Sumber: stackoverflow.com/questions/149055/…
SSH
@SSHThis Sejauh yang saya tahu JavaScript tidak memiliki tipe integer. Ini hanya memiliki tipe Angka yang semuanya disimpan secara internal sebagai angka floating point 64bit. Poin Anda valid untuk bahasa lain yang memiliki tipe integer seperti C #, C ++, tetapi tidak benar-benar untuk JavaScript.
Simon Brangwin
1
@SimonBrangwin Maksudnya masih valid, tapi semantiknya bisa membingungkan. Yang dia maksud sebenarnya adalah "hanya menyimpan mata uang sebagai bilangan bulat dalam javascript karena mereka akan disimpan sebagai bilangan floating point".
Josh Noe
1
Sekadar pengingat: parseFloat('22w')adalah 22dan parseFloat('w22')adalahNaN
IG Pascual
65

Anda juga dapat menggunakan Numberkonstruktor / fungsi (tidak perlu radix dan dapat digunakan untuk integer dan float):

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

Atau seperti yang dikatakan Andy E di komentar yang dapat Anda gunakan +untuk konversi

+'09'; /=> 9
+'09.0987'; /=> 9.0987
KooiInc
sumber
Ini tidak didukung oleh IE11
Pants
@Pants itu tentang Extensions to the Number built-in object di ES6 , bukan tentang bisa digunakanNumber
KooiInc
11

Ini bekerja:

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

Cukup berisiko untuk mengandalkan fungsi javascript untuk membandingkan dan bermain dengan angka. Dalam javascript (0,1 + 0,2 == 0,3) akan mengembalikan nilai salah karena kesalahan pembulatan. Gunakan pustaka math.js.

dondrzzy
sumber
1

Cara singkat yang mudah adalah dengan menggunakan + x Itu membuat tanda tetap utuh serta angka desimal. Alternatif lainnya adalah dengan menggunakan parseFloat (x). Perbedaan antara parseFloat (x) dan + x adalah untuk string kosong + x mengembalikan 0 sedangkan parseFloat (x) mengembalikan NaN.

Tushar Sagar
sumber
1

Saya membuat fungsi pembantu kecil untuk melakukan ini dan menangkap semua data yang rusak

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

Demo ada di sini

sidonaldson.dll
sumber