如何检查Math.cos(角度)= 0

gia*_*isf 4 c#

我正在尝试为该tan功能找到正确的域名,我知道

tan x = sinx / cos x
Run Code Online (Sandbox Code Playgroud)

并且tan未定义时cos x = 0.所以

我想检查是否cos x 为0.

 if ( Math.Cos(x).Equals(0) )
 {
     // do stuff
 }
Run Code Online (Sandbox Code Playgroud)

但这绝不是真的,因为Math.Cos返回6.123....E-17 如何检查cos == 0?

Jon*_*eet 11

你需要稍微扩大你的期望 - 为了Math.Cos(x)真正等于0,你要么需要不准确Cos(当然会发生这种情况),要么x就是要有不合理的价值.

相反,你应该制定出一些公差-一些范围值的Math.Cos这是非常接近为0.例如:

if (Math.Abs(Math.Cos(x)) < 1e-15)
Run Code Online (Sandbox Code Playgroud)

1e-15几乎是任意选择的 - 你应该找出你希望它为你的特定任务做什么.(tan当然,这仍然会给出相当大的价值......)

  • double.Epsilon不是模糊比较的epsilon,而是非零的最小值,可以用双精度浮点数表示. (3认同)
  • `double.Epsilon`太小了. (2认同)