如何将十进制值舍入到最接近的0.05值?

有没有办法将十进制值四舍五入到.Net中最近的0.05值?

例如:

7.125 – > 7.15

6.66 – > 6.7

如果它现在可用,任何人都可以提供算法吗?

怎么样:

Math.Ceiling(myValue * 20) / 20 

用这个:

 Math.Round(mydecimal / 0.05m, 0) * 0.05m; 

在T-SQL中可以使用相同的逻辑:

 ROUND(@mydecimal / 0.05, 0) * 0.05 

我更喜欢这种选择答案的方法,因为你可以直接看到所用的精度。

这样的东西应该适用于任何步骤,而不仅仅是0.05:

 private decimal RoundUp (decimal value, decimal step) { var multiplicand = Math.Ceiling (value / step); return step * multiplicand; } 

Math .. ::。Round Method(Decimal,Int32,MidpointRounding)

将双精度浮点值舍入到指定的小数位数。 参数指定如果值在两个其他数字之间的中间值,则如何舍入值。

  Math.Round(1.489,2,MidpointRounding.AwayFromZero) 

在这里和这里重复ruby和python。 它应该不会太不同。