c# - 内置 .Net 算法将值四舍五入到最接近的 10 区间

标签 c# math rounding

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

我可以很容易地用手做

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

但我正在寻找一种内置算法来完成这项工作,例如 Math.Round()。我不想手工完成的原因是我不想在我的所有项目中都编写相同或相似的代码,即使是像上面这样简单的代码。

最佳答案

类库中没有内置函数可以执行此操作。最接近的是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

关于c# - 内置 .Net 算法将值四舍五入到最接近的 10 区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274439/

相关文章:

python - 将 Python pandas 数据框中的每个数字四舍五入为 2 位小数

c# - 在页面加载数据时使用母版页显示加载消息 asp.net

c# - HTTP 407(需要代理身份验证)

c# - Fibonacci 订单中的计算位置

r - 基于小数点前位数的不同舍入规则

c - 将 float 结果保存到第三位,C 中不四舍五入

c# - 在可变长度数组之间复制 c#

c# - 当另一个线程/进程不必要地使用独占锁时,是否可以绕过 C# 中的文件锁?

c - 快速物流功能

language-agnostic - 多元对分法