Saya memiliki hasil pembagian dan saya ingin membuang bagian desimal dari angka yang dihasilkan.
Bagaimana saya bisa melakukan ini?
sumber
Saya memiliki hasil pembagian dan saya ingin membuang bagian desimal dari angka yang dihasilkan.
Bagaimana saya bisa melakukan ini?
Anda bisa menggunakan ...
Math.trunc()
(memotong bagian pecahan, juga lihat di bawah)Math.floor()
(dibulatkan ke bawah)Math.ceil()
(pembulatan) Math.round()
(bulat ke bilangan bulat terdekat)... tergantung pada bagaimana Anda ingin menghapus desimal.
Math.trunc()
belum didukung pada semua platform (yaitu IE), tetapi sementara itu Anda dapat menggunakan polyfill .
Metode lain untuk memotong bagian fraksional dengan dukungan platform yang sangat baik adalah dengan menggunakan operator bitwise (.eg |0
). Efek samping dari menggunakan operator bitwise pada angka adalah ia akan memperlakukan operand sebagai integer 32bit yang ditandatangani, oleh karena itu menghilangkan komponen fraksional. Perlu diingat ini juga akan memotong angka lebih besar dari 32 bit.
Anda mungkin juga berbicara tentang ketidaktepatan pembulatan desimal dengan aritmatika floating point.
Bacaan Wajib - Yang Harus Diketahui Setiap Ilmuwan Komputer Tentang Aritmatika Titik Apung .
Math.floor()
akan meningkatkan nilai numerik ketika angka negatif . JadiMath.floor(-1.2) -> -2
sementaraMath.floor(1.2) -> 1
.parseInt(-1.2) -> -1
( seperti yang disebutkan oleh @FloydPink ) akan membuang bagian desimal seperti yang diharapkan untuk angka positif dan negatif .> (2.305*100)|0 > 230 > (2.3*100)|0 > 229
2.3*100
dalam javascript adalah229.99999999999997
, jadi sepertinya operator bitwise melakukan tugasnya dengan benar dalam contoh Anda.|0
yang menggunakan integer 64bit?Anda juga dapat menggunakan operator bitwise untuk memotong desimal.
misalnya
Operasi bitwise jauh lebih efisien daripada fungsi Matematika. Operator ganda bukan bitwise juga tampaknya sedikit mengungguli operasi
x | 0
danx << 0
bitwise dengan jumlah yang dapat diabaikan.Juga patut dicatat adalah bahwa operator bitwise bukan diutamakan daripada operasi aritmatika, jadi Anda mungkin perlu mengelilingi perhitungan dengan tanda kurung untuk mendapatkan hasil yang diinginkan:
Info lebih lanjut tentang operator bitwise ganda tidak dapat ditemukan di Bitwise ganda TIDAK (~~)
sumber
Anda juga bisa melakukannya
sumber
parseInt
tidak akan bekerja dengan andal untuk angka besar, karena ia bekerja dengan terlebih dahulu mengonversi argumennya menjadi string, dan untuk angka besar hasilnya akan menggunakan notasi eksponensial. Misalnya:var n = 22222222222222222222222; parseInt(n);
akan kembali2
, karenan.toString()
kembali2.2222222222222223e+22
.parseInt()
untuk tujuannya, yaitu untuk mengambil angka dalam string dan mengembalikan aNumber
.Anda juga dapat menunjukkan jumlah digit tertentu setelah titik desimal (di sini 2 digit) menggunakan kode berikut:
sumber
Gunakan
Math.round()
fungsi.sumber
$.round = Math.round
;)Gunakan
Math.round()
.(Jawaban Alex lebih baik; saya membuat asumsi :)
sumber
Dengan ES2015, Math.trunc () tersedia.
Ini tidak didukung di IE11 atau di bawah, tetapi berfungsi di Edge dan setiap browser modern lainnya.
sumber
Math.trunc(value * Math.pow(10,x)) / Math.pow(10,x)
akan berhasil?value = 2.3
danx = 2
akan kembali2.29
. Saya tidak punya saran yang lebih baik.Jika Anda tidak peduli tentang rouding, cukup konversikan angka menjadi string, lalu hapus semuanya setelah periode termasuk periode. Ini berfungsi apakah ada desimal atau tidak.
sumber
toFixed akan berperilaku seperti putaran.
Untuk lantai suka perilaku gunakan%:
sumber
Berikut ini adalah tekan dalam penjelasan rinci dengan bantuan posting di atas:
1. Math.trunc (): Digunakan untuk menghapus angka-angka yang diikuti oleh titik. Konversi secara implisit. Tapi, tidak didukung di IE.
Contoh:
Math.trunc (10.5) // 10
Math.trunc (-10.5) // -10
Cara Alternatif lain: Penggunaan bitwise bukan operator:
Contoh:
x = 5.5
~~ x // 5
2. Math.floor (): Digunakan untuk memberikan nilai integer minimum yang mungkin. Ini didukung di semua browser.
Contoh:
Math.floor (10.5) // 10
Math.floor (-10.5) // -11
3. Math.ceil (): Digunakan untuk memberikan nilai integer setinggi mungkin. Ini didukung di semua browser.
Contoh:
Math.ceil (10.5) // 11
Math.ceil (-10.5) // -10
4. Math.round (): Dibulatkan ke bilangan bulat terdekat. Ini didukung di semua browser.
Contoh:
Math.round (10.5) // 11
Math.round (-10.5) // -10
Math.round (10.49) // 10
Math.round (-10.51) // -11
sumber
Untuk implementasi ES6, gunakan sesuatu seperti berikut ini:
sumber
Ini untuk mereka yang ingin mencegah pengguna memasukkan angka desimal
sumber
Anda dapat menggunakan .toFixed (0) untuk menghapus bagian desimal lengkap atau memberikan angka dalam argumen hingga Anda ingin desimal dipotong.
Catatan: toFixed akan mengubah angka menjadi string.
sumber
Sebagai contoh:
atau
sumber