【发布时间】:2015-05-03 02:09:14
【问题描述】:
我正在尝试为tan 函数找到正确的域,我知道
tan x = sinx / cos x
当cos x = 0 时,tan 未定义。所以
我正在尝试检查 cos x 是否为 0。
if ( Math.Cos(x).Equals(0) )
{
// do stuff
}
但这绝不是真的,因为 Math.Cos 返回 6.123....E-17
如何检查 cos == 0 ?
【问题讨论】:
-
由于这里使用的是双精度,你应该添加一个合理的误差范围。
-
奇怪的是,以前没有人尝试过比较双打...bing.com/search?q=C%23+double+compare 似乎正在产生一些结果 - 可能这不是第一次...
-
只有当参数恰好为 +/- pi/2 时,它才恰好为 0。从来都不是,浮点数没有足够的精度。
-
为什么不检查 x 的值以确保它与 pi/2 + kpi 不同?
-
@FDL 我想过这个,但不知道如何进行检查。
标签: c#