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)

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.


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

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);


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.


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.


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.