作者Breadtime (麵包)
看板EE_DSnP
標題[問題]簡單的程式
時間Sat Jan 10 19:59:37 2009
問題一:為什麼去run下面的code時它不會停下來?
#include<iostream>
using namespace std;
int main()
{
for(double y = 0.1; y != 1.5; y += 0.2)
cout << y << endl;
system("pause");
return 0;
}
問題二:下面的code不只沒停下來
在9.9的位置還不是輸出9.9
而是9.89999?
#include<iostream>
#define MAX 100000000
using name space
int main()
{
for(
float y = 0.1; y != 1.5; y += 0.2){
cout << y << endl;
for (int i = 0; i < MAX; i ++){}
}
system("pause");
return 0;
}
第一次用著色...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.239.184
※ 編輯: Breadtime 來自: 140.112.239.184 (01/10 20:00)
1F:推 ja77:因為你這兩個code中for的第二expression(condition部分)是判 01/10 20:25
2F:→ ja77:斷兩個浮點數,在電腦裡浮點數都是利用2進位取近似,就如同你 01/10 20:27
3F:→ ja77:第二段code所示,9.9電腦是用9.89999來近似,所以請勿判斷兩 01/10 20:28
4F:→ ja77:個浮點數的值是否一樣 01/10 20:29
5F:推 bnsblue:比較兩浮點數請用"其差是否小於一個極小數值"判斷是否相等 01/10 20:58
6F:推 michael0728n:浮點數加減會有誤差 可能導致永遠不等於 01/10 21:56
7F:→ MrOrz:這聽說是別班的期末考題喔XDrz。 01/11 10:38
8F:推 MrOrz:還記得作業二嗎:) 01/11 10:43