2010-05-13 2 views

ответ

49

Умножьте его на четыре, round как вам нужно целое число, а затем разделить его на четыре снова:

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

Различные варианты для округления, и их объяснения, можно найти в этом отличном ответ here :-)

6

в качестве альтернативы, вы можете использовать UltimateRoundingFunction приведены в этом блоге: 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; 
} 

Позвоните ниже для стандартного округления. то есть 1,125 будет округлено до 1,25

UltimateRoundingFunction(amountToRound, 0.25m, 0.5m); 

Позвоните ниже, чтобы округлить значения границ. то есть 1,125 округляется до 1,00

UltimateRoundingFunction(amountToRound, 0.25m, 0.4999999999999999m); 

Так называемый «Банкир Округлением» не представляется возможным с UltimateRoundingFunction, вы должны пойти с ответом paxdiablo за эту поддержку :)

Смежные вопросы