Java Math 反正弦asin反余弦acos函数使用注意事项

  大家都知道,函数sin和cos的值的范围为[-1,1]。

  在计算机中,由于计算位数有限,导致运算产生误差。对于32位计算机,该误差已经降低到非常非常小了,而64位和128就更小了。然,不管怎样,即使是1/(2^32)甚至1/(2^128),那也是事实存在可以被计算机识别的。

  当采用Java Math的反正弦和反余弦函数时,如果参数存在那样的误差,那就悲剧了。

  所以,如果参与反正弦和反余弦计算的参量param是通过某一运算得到的,那么在对其进行反正弦和反余弦计算之前,一定要先进行处理

  if(param<-1.0)

    param=-1.0;

  else if(param>1.0)

    param=1.0;

否则,就会出现NaN的数据了。

  如果说计算中的param会出现2.0、100或者其他更大参数的,那另当处理,这里只是确保param在-1到1之间,只是由于计算精度问题产生的<-1.0和>1.0的情况可通过此方法进行屏蔽。

你可能感兴趣的:(java,Math,NaN,ACOS,asin)