欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

有关浮点数进行计算比较时要注意的一些小细节

程序员文章站 2024-02-28 21:49:04
...

先看一个有关浮点数除法运算的一个简单例题,也是比较容易出错的题目.

7-117 圆内外 (15分)

小C学英语很努力,可惜学习方法不对,英语成绩不上不下,结果慢慢对英语失去了兴趣,不管怎么说还是上了本地的一所高级中学,成了一个高中生。作为理科生,小C的数理化还是比较不错的,所以经常有女生来请教问题。今天数学老师讲到椭圆方程x2/a2+y2/b2=1 (a,b>0) ,数学老师问,如果已知椭圆方程以及a、b,给定一点(x、y),判断该点相对椭圆的位置。小C听到这个问题笑了, 他知道只要把点坐标代入方程,左边的结果大于1就是椭圆外,小于1为椭圆内。

输入格式:
多组测试数据, 每组测试数给定a b x y,4个整数。(1<=a,b,x,y<=100)

输出格式:
根据相对位置分别输出 “out ellipse” 、 “in ellipse”。(数据中不会出现在椭圆上这种情况)每个输出占一行。

输入样例:
在这里给出一组输入。例如:

1 2 2 2
1 2 0 0

输出样例:
在这里给出相应的输出。例如:

out ellipse
in ellipse

题目很简单,直接往里面带入就可以了,但是要注意它是进行的除法运算,当遇到有浮点数的除法运算时,要注意误差问题!

#include<iostream>
#include<cmath>
using namespace std;
int main(){
	double a,b,x,y=0;
	double result;
	while(cin>>a>>b>>x>>y){
//		result=1.0*pow(x,2)/pow(a,2)+1.0*pow(y,2)/pow(b,2);     
//		if(result-1<1e-6){    如果用除法运算会有误差,所以让它计算所得的结果减去要比较的数小于一个极小数(1e-6[也就是10的负六次方])
//			cout<<"in ellipse"<<endl;
//		}
//		else {
//			cout<<"out ellipse"<<endl;
//		}
		if(b*b*x*x+a*a*y*y<a*a*b*b){//或者可以直接转变为乘法进行比较运算
			cout<<"in ellipse"<<endl;
		}
		else {
			cout<<"out ellipse"<<endl;
		}
	}
}

有关浮点数进行计算比较时要注意的一些小细节

相关标签: c++