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)
只有当它们都在零的同一侧时才能正常工作。
例如:
=40Mathf.Abs(100-140)
=80Mathf.Abs(40-120)
=10Mathf.Abs(-120-(-130)
=210…当其中一个浮点数低于零,另一个浮点数高于零时,它不工作Mathf.Abs(-100-110)
这似乎是一个非常常见的问题,是否有一些优雅的解决方案,而无需使用一堆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度的过渡处有不规则的移动。它看起来起伏不平滑。这个“距离”本应抓住这一局面并缓解它,但事实并非如此。我可能已经说服自己,在对破坏我计划的罪犯的调查中,黑人是白人。