判斷兩個浮點數偏差的時候,使用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