Saya harus menampilkan peringkat dan untuk itu saya perlu kenaikan sebagai berikut:
Jika angkanya 1.0 harus sama dengan 1
Jika angkanya 1.1 harus sama dengan 1
Jika angkanya 1.2 harus sama dengan 1
Jika nomor 1.3 harus sama dengan 1.5
Jika nomor 1.4 harus sama dengan 1.5
Jika angka 1.5 harus sama dengan 1.5
Jika angka 1.6 harus sama dengan 1.5
Jika angka 1.7 harus sama dengan 1.5
Jika angka 1.8 harus sama dengan 2.0
Jika angka 1.9 harus sama dengan 2.0
Jika angka 2.0 harus sama dengan 2.0
Jika angka 2.1 harus sama dengan 2.0
dan seterusnya ...
Apakah ada cara sederhana untuk menghitung nilai yang dibutuhkan?
Jawaban:
Kalikan peringkat Anda dengan 2, lalu bulatkan menggunakan
Math.Round(rating, MidpointRounding.AwayFromZero)
, lalu bagi nilainya dengan 2.Math.Round(value * 2, MidpointRounding.AwayFromZero) / 2
sumber
Kalikan dengan 2, bulatkan, lalu bagi dengan 2
jika Anda ingin kuarter terdekat, kalikan dengan 4, bagi dengan 4, dst
sumber
Berikut adalah beberapa metode yang saya tulis yang akan selalu membulatkan ke atas atau ke bawah ke nilai apa pun.
sumber
Ada beberapa pilihan. Jika kinerja menjadi perhatian, uji mereka untuk melihat mana yang bekerja paling cepat dalam loop besar.
sumber
sumber
Sepertinya Anda perlu membulatkan ke 0,5 terdekat. Saya tidak melihat versi
round
di C # API yang melakukan ini (satu versi membutuhkan sejumlah digit desimal untuk dibulatkan, yang bukan hal yang sama).Dengan asumsi Anda hanya harus berurusan dengan bilangan bulat persepuluhan, itu sudah cukup untuk menghitung
round (num * 2) / 2
. Jika Anda menggunakan desimal yang tepat sewenang-wenang, itu menjadi lebih rumit. Semoga tidak.sumber
Saya mengalami kesulitan dengan masalah ini juga. Saya membuat kode terutama di Actionscript 3.0 yang merupakan pengkodean dasar untuk Platform Adobe Flash, tetapi ada simularitas dalam Bahasa:
Solusi yang saya dapatkan adalah sebagai berikut:
Cukup banyak. Catat penggunaan 'Angka' dan 'Bilangan bulat' dan cara pemrosesannya.
Semoga berhasil!
sumber
sumber
Cara yang benar untuk melakukannya adalah:
sumber