C#四舍五入到特定值

C#四舍五入到特定值,c#,C#,如何将浮动舍入到0.025的倍数 例如:1.041将四舍五入为1.05 我知道如何在C#中舍入浮点值,但只能舍入到十进制值。您可以使用如下函数: public static decimal Round(decimal value) { var ceiling = Math.Ceiling(value * 400); return ceiling / 400; } 修改自 我使用它作为扩展方法,因此myFloat.quartenthsround()将是一种用法。我想提高投票率,

如何将浮动舍入到0.025的倍数

例如:1.041将四舍五入为1.05


我知道如何在C#中舍入浮点值,但只能舍入到十进制值。

您可以使用如下函数:

public static decimal Round(decimal value)
{
    var ceiling = Math.Ceiling(value * 400);

    return ceiling / 400;
}
修改自


我使用它作为扩展方法,因此
myFloat.quartenthsround()
将是一种用法。

我想提高投票率,因为这是一个有趣的挑战,但是向下投票,因为你没有尝试过任何方法乘以400,然后把结果放在一个整数中。现在把它放在一个浮点数中,再除以400。这里有一个问题/答案,与你在这里问的非常相似@pm100我甚至不知道从哪里开始尝试:(.我有一本约翰·夏普写的关于C#的书,在网上查了一下,但找不到任何有用的东西。@beska谢谢你。这是有道理的。我查过Math.round,但它似乎没有用,因为我不知道中点Rounding为什么
if
?无论如何,在这种情况下它会返回
0
。@DStanley很好的呼叫,我拉了它从我使用的另一个函数中,你偷了我的算法:-)谢谢你的解决方案@bumble\u bee\u tuna给了它一个上升投票,但因为我是新手,所以在我达到15之前不会计算声誉:(@jharris如果答案对你有帮助,请将它标记为已回答
public static float QuarterTenthsRound(this float number)
{
     var decimalPlaces = number - (int)number;

     float wholeNumber = (float)((Math.Round((decimalPlaces * 10) * 4, 
           MidpointRounding.ToEven) / 4) / 10);            

     return (int)number + wholeNumber;
}