C#函数找到两个数字的增量
我只是想知道.net框架中是否有任何内置,我可以轻松返回两个数字之间的增量? 我编写的代码可以做到这一点,但它听起来应该已经在框架中了。
delta = Math.Abs(a - b);
我的印象是“delta”是两个数字之间的差异。
在你以不同的方式告诉我之前,我认为你想要的是:
delta = Math.Abs(a - b);
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
哦,小男孩,我希望没有(未来)雇主遇到这个,并在他到达这篇文章结尾之前厌恶地阅读。
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();
这不是减运算符的作用吗? :p
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已经提出过这个问题,对他来说很有用;-)
两个数字的增量是多少? Delta在集合论和无穷小的微积分中有一定的含义,但这并不是指数字!
如果要计算两个数字a和b之间的差值,可以写|a - b|
这是Math.
C#中的Abs
(a - b)
。
我决定修改JulianR上面有趣的答案。
代码更短,但也许更棘手:
public static int Delta(int a, int b) { int delta = 0; while (a < b) { ++a; ++delta; } while (b < a) { ++b; ++delta; } return delta; }
(对于幽默受损的人......这并不比开始这个线程的奇怪问题更严重)
(r1+r2)/2
两个数字之间的平均值。