Есть ли простой способ в С # округлить десятичную дробь до ближайшей четверти, т.е. x.0, x.25, x.50 x.75, например, 0,21 округляется до 0,25, 5,03 округляется до 5,0
Заранее благодарю за любую помощь.
Есть ли простой способ в С # округлить десятичную дробь до ближайшей четверти, т.е. x.0, x.25, x.50 x.75, например, 0,21 округляется до 0,25, 5,03 округляется до 5,0
Заранее благодарю за любую помощь.
В качестве альтернативы вы можете использовать UltimateRoundingFunction, указанную в этом блоге: http://rajputh.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 для этой поддержки :)