c#中有一种简单的方法可以将小数舍入到最近的四分之一,即x.0,x.25,x.50 x.75 例如,0.21将舍入到0.25,5.03将舍入到5.0
提前感谢您的帮助。
答案 0 :(得分:65)
将它乘以四,round,因为你需要一个整数,然后再将它除以四:
x = Math.Round (x * 4, MidpointRounding.ToEven) / 4;
四舍五入的各种选项及其解释可以在这个出色的答案here中找到: - )
答案 1 :(得分:10)
或者,您可以使用此博客中给出的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的答案来支持:)