【问题标题】:How to find whether a number is even or odd using C#?如何使用 C# 查找数字是偶数还是奇数?
【发布时间】:2015-02-13 19:53:42
【问题描述】:

我知道已经有一种方法可以使用模数 (What is the fastest way to find if a number is even or odd?) 来查找数字是偶数还是奇数,但是我想知道是否有像 Math.Even 或 Math.Odd 这样的 C# 函数。使用模数是唯一的方法吗?

(我知道这听起来像是一个愚蠢的问题,但我敢打赌我的老师在 C# 中有一个内置功能可以做到这一点,他声称没有......)

【问题讨论】:

  • 如果您还没有查看它,您可能不应该下注。我假设您的意思是 .NET 框架中是否存在这种方法(它不是语言功能):不,据我所知。
  • 其实我做了一些研究,我什至提供了我访问过的一个网站的链接。
  • 我不知道,抱歉。
  • 只是为了澄清,是要求 C# 语言包含功能或一些与 C# 兼容的软件堆,例如.NET Framework,可能会提供一些帮助吗?

标签: c# syntax


【解决方案1】:

.NET 中没有任何方法可以为您调用 %2==0。考虑到替代方案实际上是五个字符

如果您真的愿意,当然可以编写自己的命名方法来执行此计算。

【讨论】:

  • @IanWise 增量运算符节省的不仅仅是两个字符。在许多情况下,这可能是一个非常显着的差异。要递增的引用可能是一个复杂的表达式,具有副作用,但它只执行一次,这可能需要一些操作才能复制。
  • @IanWise Incrementation 也可以用在比“检查前夕/奇数”更多的地方——深入到迭代中,特别是对于更长的变量名,你会很快看到这种情况发生。
  • 你需要%2==0。它是 5 个字符,而不是 2 个。这要复杂 2.5 倍;)
【解决方案2】:

它可能算作作弊,但如果你使用 BigInteger,它有一个IsEven 方法。

如MSDN中所说,调用该方法相当于:

value % 2 == 0;

参考:

【讨论】:

  • 这实际上可能会让他赢得赌注;)
  • @LucasTrzesniewski:如果有的话,他们俩都可以开怀大笑并保持朋友关系。 :)
【解决方案3】:

其实还有更多有趣的点,还有一些其他的检查方法是偶数。当你使用%时,你应该像其他人提到的那样用0检查你的值,因为与1比较会给出所有负整数的错误答案。

bool is_odd(int n) {
    return n % 2 == 1; // this method is incorrect for negative numbers
}
bool is_odd(int n) {
    return n % 2 != 0;
}

下面演示第二种流行的方式

bool is_odd(int n) {
    return x & 1 != 0;
}

这种方法利用了低位总是设置为奇数的事实。

许多人倾向于认为检查数字的第一位更快,但对于 C# 来说并非如此(至少)。速度几乎相同,而且通常模数的工作速度更快。
article,作者尝试了所有流行的方法来检查数字是否为偶数,我建议您查看文章底部演示的表格。

【讨论】:

    猜你喜欢
    • 2015-03-03
    • 2011-11-12
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多