作者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