Saya mencoba mengurai dua nilai dari datagrid. Kolom adalah numerik, dan ketika mereka memiliki koma (mis. 554,20), saya tidak bisa mendapatkan angka setelah koma. Saya sudah mencoba parseInt
dan parseFloat
. Bagaimana saya bisa melakukan ini?
javascript
parsing
floating-point
Kamil Kiełczewski
sumber
sumber
Jawaban:
Jika itu dimaksudkan sebagai nilai yang terpisah, coba ini:
Jika mereka dimaksudkan sebagai nilai tunggal (seperti dalam bahasa Prancis, di mana satu-setengah ditulis 0,5)
sumber
+(string)
bukanparseString(string)
seperti yang disarankan oleh @Stev di bawah ini. Jadi, contoh pertama adalahv1 = +(values[0]); v2 = +(values[1]);
.6.000.000
. Ganti fungsi hanya ganti pemisah koma pertamaPernahkah Anda mencoba melakukan ini? : p
+ (string) akan melemparkan string ke float.
Berguna!
Jadi untuk menyelesaikan masalah Anda, Anda dapat melakukan sesuatu seperti ini:
sumber
+(str)
solusinya -parseFloat
mengabaikan karakter yang tidak valid setelah nomor,+(str)
mengembalikanNaN
dalam kasus-kasus itu, itulah yang saya butuhkan.Ganti koma dengan titik.
Ini hanya akan mengembalikan 554:
Ini akan mengembalikan 554.20:
Jadi pada akhirnya, Anda cukup menggunakan:
Jangan lupa bahwa
parseInt()
seharusnya hanya digunakan untuk mem-parsing bilangan bulat (tidak ada floating point). Dalam kasus Anda, ia hanya akan mengembalikan 554. Selain itu, memanggil parseInt () pada float tidak akan membulatkan angka: ia akan mengambil lantai (bilangan bulat terdekat terdekat).Contoh luas untuk menjawab pertanyaan Pedro Ferreira dari komentar:
Jika bidang teks berisi ribuan titik pemisah seperti di dalamnya
1.234.567,99
dapat dihilangkan sebelumnya dengan yang lainreplace
:sumber
Jika Anda memperluas objek String seperti ini ..
.. Anda bisa menjalankannya seperti ini
bekerja dengan dot juga
sumber
@GusDeCool atau orang lain mencoba untuk mengganti lebih dari satu pemisah ribuan, salah satu cara untuk melakukannya adalah regex global yang menggantikan:
/foo/g
. Ingatlah bahwa itu.
adalah metacharacter, jadi Anda harus menghindarinya atau memasukkannya ke dalam tanda kurung (\.
atau[.]
). Inilah satu opsi:sumber
Anda dapat menggunakan fungsi ini. Ini akan mengganti koma dengan '' dan kemudian akan mem-parseFlaot nilai dan setelah itu lagi akan menyesuaikan koma dalam nilai.
sumber
Saya memiliki masalah yang sama kecuali saya tidak tahu sebelumnya apa yang merupakan pemisah ribuan dan pemisah desimal. Saya akhirnya menulis perpustakaan untuk melakukan ini. Jika Anda tertarik di sini adalah: https://github.com/GuillaumeLeclerc/number-parsing
sumber
Mencoba
sumber