Saya membutuhkan fungsi utilitas yang mengambil nilai integer (mulai dari 2 hingga 5 digit panjangnya) yang membulatkan ke kelipatan 5 berikutnya, bukan kelipatan terdekat 5. Inilah yang saya dapatkan:
function round5(x)
{
return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}
Ketika saya berlari round5(32)
, itu memberi saya 30
, di mana saya ingin 35.
Ketika saya berlari round5(37)
, itu memberi saya 35
, di mana saya ingin 40.
Ketika saya berlari round5(132)
, itu memberi saya 130
, di mana saya ingin 135.
Ketika saya berlari round5(137)
, itu memberi saya 135
, di mana saya ingin 140.
dll ...
Bagaimana saya melakukan ini?
javascript
math
rounding
Amit Erandole
sumber
sumber
round5(5)
memberi 5, atau 10?Jawaban:
Ini akan melakukan pekerjaan:
Ini hanya variasi dari pembulatan umum
number
ke beberapax
fungsi terdekatMath.round(number/x)*x
, tetapi menggunakan.ceil
alih-alih.round
membuatnya selalu membulatkan ke atas, bukan ke bawah / ke atas menurut aturan matematika.sumber
const roundToNearestMultipleOf = m => n => Math.round(n/m)*m
Penggunaan:roundToNearestMultipleOf(5)(32)
Ini akan membulatkan angka ke 5 terdekat. Untuk selalu membulatkan ke atas ke 5 terdekat, gunakan
Math.ceil
. Demikian juga, untuk selalu membulatkan ke bawah, gunakanMath.floor
sebagai penggantiMath.round
. Anda kemudian dapat memanggil fungsi ini seperti yang Anda lakukan pada fungsi lainnya. Sebagai contoh,akan kembali:
sumber
Seperti ini?
sumber
Saya tiba di sini sambil mencari sesuatu yang serupa. Jika nomor saya adalah —0, —1, —2 seharusnya lantai ke —0, dan jika —3, —4, —5 seharusnya menjadi —5.
Saya datang dengan solusi ini:
Dan tesnya:
sumber
Math.round
Salam Paul
sumber
// bulat dengan presisi
// bulat ke 5 dengan tepat
sumber
Alasan menggunakan round adalah input yang diharapkan bisa berupa angka acak.
Terima kasih!!!
sumber
mungkin?
sumber
int
tidak ditentukan. Mungkin Anda inginparseInt
, tetapi ini tidak diperlukan karenaMath.floor
mengembalikan angka.