在使用浮点数时使用运算符有什么问题。我们不能使用'==''< ='等运算符与浮点数吗?为什么我们不能使用带有浮点数的运算符?
这里是代码。
# include <iostream>
using namespace std;
main(){
float x, y, z;
cout<<"1st integer: ";
cin>>x;
do {
cout<<"2nd integer: ";
cin>>y;
if(y<=0){
cout<<"You can't divide by zero"<<endl;
continue;
} else {
break;
}
} while (1);
z = x/y;
cout<<"Result: "<<z;
}
它生成正确的结果,因为我想得到。但是从我听到的一些地方来看,使用浮点数的运算符并不是一个好逻辑。为什么?
相关阅读:http://stackoverflow.com/questions/21895756/why-are-floating-point-numbers-inaccurate'0.1 + 0.2 == 0.3000 ... 4'并且是'> 0.3'(不是' == 0.3')。 – Caramiriel 2015-02-23 06:57:09
@Galic,实际上两个浮点数#是完全相等的。事实上,它们可能更有可能是平等的,如果你有无限的精度。例如:float a = 1.0f,b = 1.0f;肯定会做一个== b。此外,如果delta低于float的精度,那么==(b + delta)也是正确的。有什么问题是,有时他们是不相等的,当你期望他们... – thang 2015-02-23 07:03:52
@TonyD但是当我在整数变量而不是浮点使用这个程序会发生什么?我的意思是如果我输入0.50的分子值,循环不会中断,它会连续运行并显示结果,为什么?整数会丢弃小数,所以为什么它不在这里实现? – 2015-02-23 07:38:07