Membulatkan desimal ke kuarter terdekat di C#

Apakah ada cara sederhana di c# untuk membulatkan desimal ke kuarter terdekat yaitu x.0, x.25, x.50 x.75 misalnya 0,21 akan dibulatkan menjadi 0,25, 5,03 akan dibulatkan menjadi 5,0

Terima kasih sebelumnya atas bantuan apa pun.


person bplus    schedule 13.05.2010    source sumber


Jawaban (2)


Kalikan dengan empat, bulatkan sesuai kebutuhan menjadi bilangan bulat, lalu bagi lagi dengan empat:

x = Math.Round (x * 4, MidpointRounding.ToEven) / 4;

Berbagai opsi pembulatan, dan penjelasannya, dapat ditemukan dalam jawaban luar biasa ini di sini :-)

person paxdiablo    schedule 13.05.2010

Alternatifnya, Anda dapat menggunakan UltimateRoundingFunction yang diberikan di blog ini: http://rajputyh.blogspot.in/2014/09/the-ultimate-rounding-function.html

//amountToRound => input amount
//nearestOf => .25 if round to quater, 0.01 for rounding to 1 cent, 1 for rounding to $1
//fairness => btween 0 to 0.9999999___.
//            0 means floor and 0.99999... means ceiling. But for ceiling, I would recommend, Math.Ceiling
//            0.5 = Standard Rounding function. It will round up the border case. i.e. 1.5 to 2 and not 1.
//            0.4999999... non-standard rounding function. Where border case is rounded down. i.e. 1.5 to 1 and not 2.
//            0.75 means first 75% values will be rounded down, rest 25% value will be rounded up.
decimal UltimateRoundingFunction(decimal amountToRound, decimal nearstOf, decimal fairness)
{
    return Math.Floor(amountToRound / nearstOf + fairness) * nearstOf;
}

Hubungi di bawah untuk pembulatan standar. yaitu 1,125 akan dibulatkan menjadi 1,25

UltimateRoundingFunction(amountToRound, 0.25m, 0.5m);

Hubungi di bawah untuk membulatkan nilai batas ke bawah. yaitu 1,125 akan dibulatkan menjadi 1,00

UltimateRoundingFunction(amountToRound, 0.25m, 0.4999999999999999m);

Apa yang disebut "Pembulatan Bankir" tidak mungkin dilakukan dengan UltimateRoundingFunction, Anda harus menggunakan jawaban paxdiablo untuk dukungan itu :)

person Yogee    schedule 18.09.2014
comment
Inilah yang saya perlukan untuk membulatkan ke n terdekat. - person joelc; 20.03.2018