C++问题,急需答案··

[复制链接]
查看11 | 回复1 | 2008-12-27 18:16:12 | 显示全部楼层 |阅读模式
#include
using namespace std;
double power(double x,int n);
int main()
{
int n=0,i,p,q,t;
double x,y;
for(t=1;t>=1;t++)
{
cout>x;
y=x;
for(n=0;(double)y!=(int)y;n++)
{
y*=10;
}
p=(double)y;
q=power(10,n);
while((p%2==0)&&(q%2==0))
{
p=p/2;
q=q/2;
}
while((p%5==0)&&(q%5==0))
{
p=p/5;
q=q/5;
}
cout=1)
{
n--;
d*=x;
}
return(d);
}
这个程序将小数华为分数,0.21,0.22,0.24,0.25,0.125····都能计算。为啥不能计算0.23,0.28呢?
在线等,那位高手指点指点
我刚学c++,对浮点数不太清楚

回复

使用道具 举报

千问 | 2008-12-27 18:16:12 | 显示全部楼层
这是浮点数的误差.没有为什么,就这样...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行