[ACM]计算几何_浮点数相关
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ACM]计算几何_浮点数相关相关的知识,希望对你有一定的参考价值。
1、多用double少用float
double的输入与输出:(注意占位符:scanf中是%lf,printf中是%f)
1 double x; 2 scanf("%lf",&x); 3 printf("%f,x);
2、判断浮点数大于0/小于0/等于0
使用sgn(x):
1 #define EPS (1e-8) 2 inline int sgn(double x){ 3 return (x > EPS) - (x < -EPS); 4 }
3、判断两个浮点数大小关系
使用sgn(x-y)与0的关系判断即可。
4、连乘时采用 x1*x2*x3...*xn = exp(ln(x1*x2*x3...*xn)) = exp(ln(x1)+ln(x2)+ln(x3)+...+ln(xn)) 来计算
5、若开方的数是负数那么sqrt会返回奇怪的值,所以在此前最好先进行判断(毕竟浮点数有坑)
1 inline double mysqrt(double x){ 2 return sqrt(max(0.0,x)); 3 }
6、输出时也要注意免得输出类似-0.00000的结果
主要参考:
2、浮点数相关的陷阱
以上是关于[ACM]计算几何_浮点数相关的主要内容,如果未能解决你的问题,请参考以下文章
内部格式为 GL_RGBA8 的纹理在片段着色器中显示为浮点数