C#函数查找两个数字的增量[重复]

Posted

技术标签:

【中文标题】C#函数查找两个数字的增量[重复]【英文标题】:C# function to find the delta of two numbers [duplicate] 【发布时间】:2009-07-10 18:26:24 【问题描述】:

我只是想知道 .net 框架中是否内置了任何东西,我可以轻松地返回两个数字之间的增量?我编写了执行此操作的代码,但听起来应该已经在框架中了。

【问题讨论】:

这个问题是否确定浮点数是否在给定范围内? (否则或多或少是一个减法问题...... 减法。 . .加法是个棘手的朋友。 【参考方案1】:
delta = Math.Abs(a - b);

【讨论】:

哇...24 个字符 的回答获得了 385 个代表(并且还在增加)。这不是一个糟糕的比例。 还为他赢得了逆转徽章。其中只有 207 个曾经分发过!不错! 特别小心a-b 等于Int32.MinValue 时,由于System.Overflow 异常,此代码将崩溃。更多详情here. @RBT:Math 类中的许多函数都会发生上溢或下溢。这些方法的调用者需要知道它们的限制是什么。 @RobertHarvey 你是绝对正确的。我对为什么会发生这种情况进行了更多调查。正如here 所提到的,原因被证明是非常微不足道的。数字数据类型的范围总是像-x(x-1)。当然,如果我尝试在相同的数据类型中容纳+x 以获得它必然失败的绝对值:)【参考方案2】:

我的印象是“delta”是两个数字之间的差。

除非你以不同的方式告诉我,否则我认为你想要的是:

delta = Math.Abs(a - b);

【讨论】:

【参考方案3】:
public static int Delta(int a, int b)

  int delta = 0;
  if (a == b)
  
    return 0;
  
  else if (a < b)
  
    while (a < b)
    
      a++;
      delta++;
    
    return delta;
  
  else
  
    while (b < a)
    
      b++;
      delta++;
    
    return delta;
  

:p

哦,男孩,我希望没有(未来的)雇主遇到这个,在他到达这篇文章的结尾之前停止厌恶地阅读..

【讨论】:

【参考方案4】:

Linq 版本(需要 CLR 4.0)。

(打断手指,清清嗓子)

var delta = (from t in Enumerable.Range(a, a).Zip(Enumerable.Range(b, b))
            select Math.Abs(t.Item1 - t.Item2))
            .First();

【讨论】:

【参考方案5】:

这不是减号运算符的作用吗? :p

【讨论】:

不完全但很好的答案;-)【参考方案6】:
public static int Delta(int a, int b)

    return a > 0? Delta(a-1, b-1) : a < 0 ? Delta(a+1, b+1) : b > 0 ? b : -b;

我认为这比 @JulianR Delta 实现还要好:-p

编辑:我没有意识到@Robert Harvey 已经提出了这个建议,感谢他 ;-)

【讨论】:

哦,那好多了。递归链式三元运算符! 是的,它甚至可以工作! XD我以为我会犯一些错误,但没想到^_^【参考方案7】:

两个数字的增量是多少? Delta在集合论和微积分中有一定的意义,但这不是指数字!

如果你想计算两个数字 a 和 b 之间的差,你可以写 |a - b|,在 C# 中是 Math.Abs(a - b)

【讨论】:

Delta在微积分中没有一定的意义,只是一个常用的符号。 Jason,在微积分中 delta 可能指的是狄拉克 delta 函数,因此具有明确的含义。一个广泛使用的不同定义是克罗内克斯三角洲。因此,当达里奥要求澄清时,他是对的。 OPs 的问题有点模棱两可。【参考方案8】:

我决定修改上面 JulianR 的有趣回答。

代码更短,但可能更棘手:

public static int Delta(int a, int b)

  int delta = 0;
  while (a < b)
  
    ++a;
    ++delta;
  
  while (b < a)
  
    ++b;
    ++delta;
  
  return delta;

(对于幽默受损的人......这并不比启动线程的奇怪问题更严重)

【讨论】:

【参考方案9】:
(r1+r2)/2

两个数字之间的平均值。

【讨论】:

以上是关于C#函数查找两个数字的增量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

编写在数字数组中查找元素索引的函数[重复]

excel判断表数据是不是存在另一个表中

C#函数返回两个值[重复]

在C#中使用函数返回两个字符串[重复]

使用文本文件 C# 进行线性搜索 [重复]

C#获取mysql自动增量值[重复]