在使用浮點數時使用運算符有什麼問題。我們不能使用'==''< ='等運算符與浮點數嗎?爲什麼我們不能使用帶有浮點數的運算符?
這裏是代碼。
# 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