Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 两个浮点数之间的差值_C#_Algorithm_Math - Fatal编程技术网

C# 两个浮点数之间的差值

C# 两个浮点数之间的差值,c#,algorithm,math,C#,Algorithm,Math,如何获得两个浮动之间的“距离”? Mathf.Abs(X-Y)只有当它们都在零的同一侧时才能正常工作。 例如: Mathf.Abs(100-140)=40 Mathf.Abs(40-120)=80 Mathf.Abs(-120-(-130)=10 Mathf.Abs(-100-110)=210…当其中一个浮点数低于零,另一个浮点数高于零时,它不工作 这似乎是一个非常常见的问题,是否有一些优雅的解决方案,而无需使用一堆if语句?结果是正确的。尝试将其可视化: -110和100之间的距离是-1

如何获得两个浮动之间的“距离”?
Mathf.Abs(X-Y)
只有当它们都在零的同一侧时才能正常工作。 例如:

  • Mathf.Abs(100-140)
    =40
  • Mathf.Abs(40-120)
    =80
  • Mathf.Abs(-120-(-130)
    =10

  • Mathf.Abs(-100-110)
    =210…当其中一个浮点数低于零,另一个浮点数高于零时,它不工作


这似乎是一个非常常见的问题,是否有一些优雅的解决方案,而无需使用一堆if语句?

结果是正确的。尝试将其可视化:

-110
100
之间的距离是
-110
0
之间的距离(
Mathf.Abs(-110-0)=110
)和
100
0
之间的距离之和(
Mathf.Abs(100-0)=100
)。也就是说:
110
+
100
=
210
。也许您考虑了不同的操作?如果您想要参数绝对值之间的距离,请尝试:

Mathf.Abs(Mathf.Abs(X) - Mathf.Abs(Y))

Mathf.Abs(-120-(-130)=10中,
-110
100

缺少一个
生成
10
,但是
-100
110
之间的距离是210-为什么你认为它不起作用?记住这些也很方便:
-x-y=-x+y);x-(-y)=x+y;-x+y=y-x
。感谢你提供了一个非常全面的答案,即使是一张照片。在我的代码中,它肯定与我的代码完全不同。我有一个围绕一个点旋转的相机,由于平滑,它在-180到180度的过渡处有不规则的移动。它看起来起伏不平滑。这个“距离”本应抓住这一局面并缓解它,但事实并非如此。我可能已经说服自己,在对破坏我计划的罪犯的调查中,黑人是白人。