Anda perlu MidpointRounding.AwayFromZerojika Anda ingin nilai 0,5 untuk dibulatkan. Sayangnya ini bukan perilaku default untuk Math.Round(). Jika menggunakan MidpointRounding.ToEven(default), nilai dibulatkan ke bilangan genap terdekat ( 1.5dibulatkan ke 2, tetapi 2.5juga dibulatkan ke 2).
apakah toh mereka membulatkan 137,5 ke 140 bukan ke 138? Maksud saya pembulatan ke persepuluh terdekat?
sam
7
Anda perlu Math.Round, tidak Math.Ceiling. Ceilingselalu "membulatkan" ke atas, sedangkan Roundmembulatkan ke atas atau ke bawah tergantung pada nilai setelah koma desimal.
Itu masih terlihat mencurigakan. Pertama, pertanyaan menanyakan tentang pembulatan ke atas dan kedua, ketika saya mencoba sekarang, implementasi standar dari Math.round (1,5) putaran ke 2. Jadi ini mungkin tidak apa yang ia inginkan.
ver
juga, contoh Anda mencampurkan titik desimal dengan koma desimal. Yang mana yang biasanya Anda gunakan (di Swedia, saya rasa)? :)
ver
Ups ... oh ya, maaf. Tentu saja dalam pemrograman koma desimal, tapi dalam teks formal kita menggunakan koma desimal. dan ya, Swedia ^^ tentang pertanyaan tersebut, dan bagian "pembulatan": saya pikir itu hanya beberapa kesalahan bahasa. dalam contoh yang diberikan oleh op, beberapa bilangan desimal dibulatkan ke bawah.
davogotland
@ Jika saya tidak membulatkan ke bawah dengan Math.Round, saya melakukannya dengan pemeran. itulah mengapa cara ini manual dan agak lucu;)
davogotland
5
Anda dapat menggunakan Math.Round seperti yang disarankan orang lain (disarankan), atau Anda dapat menambahkan 0,5 dan memasukkan int (yang akan menghilangkan bagian desimal).
Saya mencari ini, tetapi contoh saya adalah mengambil angka, seperti 4,2769 dan menjatuhkannya dalam rentang hanya 4,3. Tidak persis sama, tetapi jika ini membantu:
Model.Statistics.AverageReview<= it's just a double from the model
Kemudian:
@Model.Statistics.AverageReview.ToString("n1")<=gives me 4.3@Model.Statistics.AverageReview.ToString("n2")<=gives me 4.28
Saya menggunakan metode ini karena saya juga membutuhkan string dan .ToString ("n0") menangani pembulatan untuk saya: 1.5m.ToString ("n0") // return "2"
Jawaban:
Lihat dokumentasi resmi untuk lebih lanjut. Sebagai contoh:
Pada dasarnya Anda memberikan
Math.Round
metode tiga parameter.Kode sampel:
Demo Langsung
Anda perlu
MidpointRounding.AwayFromZero
jika Anda ingin nilai 0,5 untuk dibulatkan. Sayangnya ini bukan perilaku default untukMath.Round()
. Jika menggunakanMidpointRounding.ToEven
(default), nilai dibulatkan ke bilangan genap terdekat (1.5
dibulatkan ke2
, tetapi2.5
juga dibulatkan ke2
).sumber
away from zero
juga berarti-1.5
akan membulatkan ke-2
.selalu membulat (menuju langit-langit)
selalu membulatkan ke bawah (menuju ke lantai)
apa yang Anda kejar itu sederhana
yang bulat sesuai posting ini
sumber
Anda perlu
Math.Round
, tidakMath.Ceiling
.Ceiling
selalu "membulatkan" ke atas, sedangkanRound
membulatkan ke atas atau ke bawah tergantung pada nilai setelah koma desimal.sumber
ada manual ini, dan agak lucu juga:
cukup tambahkan 0,5 ke nomor apa saja, dan lemparkan ke int (atau floor itu) dan itu akan dibulatkan secara matematis dengan benar: D
sumber
Anda dapat menggunakan Math.Round seperti yang disarankan orang lain (disarankan), atau Anda dapat menambahkan 0,5 dan memasukkan int (yang akan menghilangkan bagian desimal).
sumber
Sekadar pengingat. Waspadalah terhadap penggandaan.
sumber
Anda memiliki fungsi Math.Round yang melakukan apa yang Anda inginkan.
sumber
1.5
dengan nilainya? Anda membutuhkan lebih banyak parameter.ini akan membulatkan ke atas ke 5 terdekat atau tidak berubah jika sudah habis dibagi 5
sumber
Saya mencari ini, tetapi contoh saya adalah mengambil angka, seperti 4,2769 dan menjatuhkannya dalam rentang hanya 4,3. Tidak persis sama, tetapi jika ini membantu:
Kemudian:
dll ...
sumber
Penggunaan
Math.Round
:sumber
Ini akan memberikan hasil:
sumber
Jika Anda bekerja dengan bilangan bulat daripada bilangan floating point, inilah caranya.
Di sini "numr" dan "denr" adalah bilangan bulat tak bertanda.
sumber
Menggunakan
Math.Round(number)
putaran ke bilangan bulat terdekat.sumber
Tulis metode putaran Anda sendiri. Sesuatu seperti,
function round(x) rx = Math.ceil(x) if (rx - x <= .000001) return int(rx) else return int(x) end
sumber
sumber