一尘不染

内置.Net算法,可将值四舍五入到最接近的10个间隔

c#

如何在C#中将任何值四舍五入到10个间隔?例如,如果我有11,我希望它返回10,如果我有136,那么我希望它返回140。

我可以轻松地手工完成

return ((int)(number / 10)) * 10;

但是我正在寻找一种内置算法来完成这项工作,就像Math.Round()一样。我不愿意手工做的原因是,我不想为我的整个项目编写相同或相似的代码,即使是像上面这样简单的事情也是如此。


阅读 270

收藏
2020-05-19

共1个答案

一尘不染

类库中没有内置函数可以执行此操作。最接近的是System.Math.Round(),仅用于将Decimal和Double类型的数字四舍五入到最接近的整数值。但是,如果您使用的是.NET
3.5,则可以将语句包装在扩展方法中,这将使您更加整洁地使用该功能。

public static class ExtensionMethods
{
    public static int RoundOff (this int i)
    {
        return ((int)Math.Round(i / 10.0)) * 10;
    }
}

int roundedNumber = 236.RoundOff(); // returns 240
int roundedNumber2 = 11.RoundOff(); // returns 10

如果要针对旧版本的.NET框架进行编程,只需从RoundOff函数中删除“ this”,然后按如下所示调用该函数:

int roundedNumber = ExtensionMethods.RoundOff(236); // returns 240
int roundedNumber2 = ExtensionMethods.RoundOff(11); // returns 10
2020-05-19