判断两个浮点数偏差的时候,使用fabs(a-b) < eps
,通常的eps为1e-9
。若是有可能,尽可能避免浮点运算,作整数的转换。算法
计算一元二次方程解的时候,能够进行如此运算,例如((sqrt(8.0*n+1)-1)/2-eps)+1
函数
多多利用log函数,用以减少数量级。code
c#include <math.h> double log(double x); /* 计算一个数字的天然对数 */ double log10(double x); /* 计算以10为基数的对数 */
求一个数的位数: log10(a)
技巧
矩阵的乘积方法
经过有向面积判断点是否在图形内部时间
经过行列式的三个点求有向面积co
例如:浮点数
| x0 y0 1 | 2A = | x1 y1 1 | = x0y1 + x2y0 + x1y2 - x2y1 - x0y2 - x1y0 | x2 y2 1 |
两倍的三角形面积
方法是构建齐次坐标,若是逆时针,有向面积为正,逆时针,有向面积为负。数字
左边求,右边求,左右边求。。math