Saya ingin menggunakan Javascript untuk mengumpulkan angka. Karena angkanya adalah mata uang, saya ingin mengumpulkannya seperti dalam contoh-contoh ini (2 poin desimal):
- 192.168 => 192.20
- 192.11 => 192.20
- 192.21 => 192.30
- 192.26 => 192.30
- 192.20 => 192.20
Bagaimana cara mencapai ini menggunakan Javascript? Fungsi Javascript bawaan akan mengumpulkan angka berdasarkan logika standar (kurang dari 5 untuk mengumpulkan).
javascript
rounding
cyberfly
sumber
sumber
ceil()
akan memberi Anda193
, jadi kami harus memastikan bahwa semua presisi yang ingin kami pertahankan adalah sebelum titik desimal. Kemudian kami melakukan operasi terbalik untuk mengembalikan nilai "asli".192.19999999999997
, Anda dapat melamar.toFixed(1)
kenum
Agak terlambat, tetapi, dapat membuat fungsi javascript yang dapat digunakan kembali untuk tujuan ini:
Panggil fungsi sebagai
sumber
Pembulatan normal akan bekerja dengan tweak kecil:
dan jika Anda ingin mempertahankan format mata uang, Anda dapat menggunakan metode Angka
.toFixed()
Meskipun ini akan membuatnya menjadi String =)
sumber
price.toFixed(2)
Sangat dekat dengan jawaban TheEye , tetapi saya mengubah sedikit hal untuk membuatnya bekerja:
sumber
OP mengharapkan dua hal:
A. untuk mengumpulkan ke persepuluhan yang lebih tinggi, dan
B. untuk menunjukkan nol di tempat keseratus (kebutuhan khas dengan mata uang).
Memenuhi kedua persyaratan tampaknya membutuhkan metode terpisah untuk masing-masing di atas. Inilah pendekatan yang dibangun berdasarkan jawaban yang disarankan suryakiran:
Catatan penting: solusi ini menghasilkan hasil yang sangat berbeda dengan angka negatif dan eksponensial.
Demi perbandingan antara jawaban ini dan dua yang sangat mirip, lihat 2 pendekatan berikut. Yang pertama hanya membulatkan ke seratus terdekat per biasanya, dan yang kedua hanya putaran ke yang terdekat seratus (lebih besar).
sumber
ok, ini sudah dijawab, tapi saya pikir Anda mungkin ingin melihat jawaban saya yang memanggil fungsi math.pow () sekali. Saya kira saya suka menjaga barang-barang KERING.
Ini semacam menyatukan semuanya. Ganti Math.round () dengan Math.ceil () untuk mengumpulkan alih-alih pembulatan, itulah yang diinginkan OP.
sumber
fungsi ini membatasi desimal tanpa angka bulat
sumber
Saya telah menggunakan jawaban @AndrewMarshall untuk waktu yang lama, tetapi menemukan beberapa kasus tepi. Tes berikut tidak lulus:
Inilah yang sekarang saya gunakan untuk mengumpulkan perilaku yang benar:
Sumber: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
sumber
roundUp(37.760000000000005, 4)
harus37.7601
, danroundUp(5.83333333, 4)
seharusnya5.8334
. Keduanya (dan yang pertama) semuanya berlaku untuk fn yang saya berikan.parseInt selalu dibulatkan ...
do parseInt () +1
sumber