关于二位平面上【点】的一些函数:
acos()函数;
返回的是一个数值的反余弦弧度值。
输出:(0,pi)
常用的π=acos(-1.0).
atan()函数;
atan可返回数字的反正切值。
输 入: (-∞.+∞)
输 出: (-pi/2,pi/2)
atan2()函数;
atan2 返回的是方位角。
C 语言里 double atan2(double y,double x) 返回的是原点至点(x,y)的方位角,即与 x 轴的夹角。
C 函数允许 x、y 同时为零。
与 atan 的不同
atan2 比 atan 稳定。
如:atan(y/x),当 y 远远大于 x 时,计算结果是不稳定的。
atan2(y,x)的做法:
当 x 的绝对值比 y 的绝对值大时使用 atan(y/x);
反之使用 atan(x/y)。这样就保证了数值稳定性。
ACM中的浮点数精度处理
具体可以参考:http://www.cnblogs.com/crazyacking/p/4668471.html
有以下9个注意点,总结很不错啊!推荐!
1.浮点数为啥会有精度问题:
2. eps
3. eps带来的函数越界
4. 输出陷阱I
5. 输出陷阱II
6. 范围越界
7. 关于set<T>
8. 输入值波动过大
9. 一些建议
浮点数判断大小的写法:
补充,sgn()函数;
传统意义 修正写法1 修正写法2
a == b sgn(a - b) == 0 fabs(a – b) < eps
a != b sgn(a - b) != 0 fabs(a – b) > eps
a < b sgn(a - b) < 0 a – b < -eps
a <= b sgn(a - b) <= 0 a – b < eps
a > b sgn(a - b) > 0 a – b > eps
a >= b sgn(a - b) >= 0 a – b > -eps