浮点型数据的精度控制问题
来源:互联网 发布:Win apache cgi 配置 编辑:程序博客网 时间:2024/04/29 01:30
Problem G: 说好的点呢
Time Limit: 1 Sec Memory Limit: 16 MBSubmit: 2380 Solved: 392
[Submit][Status][Web Board]
Description
两点确定一条直线,判断一条直线与一个圆的位置关系。
Input
输入中前两行每行描述一个点的坐标(x,y),x,y均为实数。
第三行包含三个实数,即圆心坐标和圆的半径R>0。
Output
输出包含三种情况,计算误差应在1e-3(0.001)内。
“Interseetion”(相交时输出);
“Tangency”(相切时输出);
“Disjoint”(相离时输出);
以上输出不含引号。
Sample Input
1 00 10 0 1
Sample Output
Interseetion
HINT
回忆中学的几何知识,最好能自己先想到此题的几何解,实在想不到,可以查查法线方程之类的,然后用程序实现。这里要用到浮点数的精度控制。
Append Code
#include<stdio.h>
#include<math.h>
int
main()
{
double
xi,yi,xii,yii,x,y,k,d,m,n,r;
scanf
(
"%lf %lf"
,&xi,&yi);
scanf
(
"%lf %lf"
,&xii,&yii);
scanf
(
"%lf %lf %lf"
,&x,&y,&r);
if
(r>0)
{
if
(xi==xii&&yi!=yii)
//if(yi!=yii)
d=
fabs
(x)+
fabs
(xi);
else
{
k=(yi-yii)/(xi-xii);
m=
fabs
(k*x+(-1)*y+yi-k*xi);
n=
fabs
(
sqrt
(k*k+1));
d=m/n;
}
if
(d>r+0.001)
printf
(
"Disjoint"
);
if
(d<r-0.001)
printf
(
"Interseetion"
);
if
(
fabs
(d-r)<1e-3)
printf
(
"Tangency"
);
}
关于浮点型数据的精度控制问题,在浮点型数据中,两个数的比较需要进行精度控制,">"形式,m>n+精度;"<"形式,m<n-精度;"="形式,fabs(m-n)<精度。
0 0
- 浮点型数据的精度控制问题
- 双精度浮点型数据运算精度丢失以及数据的格式化问题
- 控制浮点数的精度
- 浮点数的精度问题
- 浮点相等的精度问题
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- win32程序浮点数据精度问题
- 浮点数精度控制
- 124.浮点型数据精度不准确的探究
- 南阳 477(浮点型的精度问题)
- Java中的浮点型进行四则运算精度丢失的问题
- js处理浮点型的bug问题--js精度丢失
- 浮点数据的精度计算和验证
- C语言中单精度和双精度浮点型数据的数值范围
- JS浮点运算精度的问题
- (转)Direct3D的浮点精度问题
- oracle中with as语句的使用
- Spring定时任务的几种实现
- Couchbase——查询信息
- ActionBar 详解(下)
- 关于最近面试的知识点的总结
- 浮点型数据的精度控制问题
- php今天碰到unlink不能删除文件的问题
- JavaWeb——Day11_2
- ffmpeg参数解释
- java数据结构 数组与有序数组
- Objective-C Runtime
- Spark学习笔记-Streaming-1<转>
- WEB界面客制化之资产转移申请单(直接改RTF模板或WF程序包)
- ThinkPHP介绍--1