| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1762 人关注过本帖
标题:浮点型 与 整型
只看楼主 加入收藏
withoutme_hw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-19
收藏
 问题点数:0 回复次数:9 
浮点型 与 整型

为什么在有些程序中 的数值计算 用浮点型 会运行不了
而一旦 将其中所有的浮点型 改成 整型就 OK
谢!

搜索更多相关主题的帖子: 点型 整型 数值计算 运行 
2006-03-19 20:54
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
收藏
得分:0 
有没有具体一点的例啊,我好象还没有遇到过这样的情况,拿出来一起研究嘛

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-19 20:56
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 
恩,具体点

2006-03-19 21:07
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
我觉得是不是您用了浮点的判断。
比如两个浮点判断是否相等。

2006-03-19 22:48
withoutme_hw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-19
收藏
得分:0 

例如:
这是一个计算器程序,例如输入12+2*3=
得出结果18; 注:其中有些printf语句是我用来测试用的,无太大意义。
#include <stdio.h>
#include <conio.h>

struct com
{
union
{
int num;
char sign;
}data;
struct com * next;
};
typedef struct com com;
void compute(com *pr,char s);
void Print(com *head);

main()
{
int flag=-1;
com *head,*p,*pr;
head=(com *)malloc(sizeof(com));
head->next=NULL;
pr=head;
do
{
p=(com *)malloc(sizeof(com));
if (p==NULL)
{
printf("not enough memory");
getch();
exit(0);
}
p->next=NULL;
pr->next=p;
flag*=-1;
if(flag==1)
{
scanf("%d",&p->data.num);

}
else
{
p->data.sign=getchar();
}
pr=p;
}while(p->data.sign!='=');
Print(head);
compute(head,'*');
compute(head,'+');
printf("%d",head->next->data.num);
getch();
}

void compute(com *pr,char s)
{
com *p;
pr=pr->next;
p=pr->next;
while(1)
{
if(s=='*')
{
if(p->data.sign=='*')
{
pr->data.num*=p->next->data.num;
printf("counting*\n");
}
else if(p->data.sign=='/')
{
pr->data.num/=p->next->data.num;
printf("counting /\n");
}
else
{
p=p->next->next;
pr=pr->next->next;
printf("junmping ");
if(p->data.sign=='=') break;
continue;
}
}
if(s=='+')
{
if(p->data.sign=='+')
{
pr->data.num+=p->next->data.num;
printf("counting + '%d' ",pr->data.num);
}
else
{
pr->data.num-=p->next->data.num;
printf("counting - '%d' ",pr->data.num);
}
}
pr->next=p->next->next;
free(p->next);
free(p);
p=pr->next;
if(p->data.sign=='=') break;
}
}

void Print(com *head)
{
com *p;
int flag=-1;
p=head;
do
{
p=p->next;
flag*=-1;
if(flag==1)
{
printf("%d",p->data.num);
}
else
{
printf("%c",p->data.sign);
}

}while(p->data.sign!='=');
}
以前一些简单的程序也碰到过 ,这个程序稍复杂点,
这个程序是可以正常运行的 ,但是如果把所有的int改成float %d改成%f
就会出错 。
请各位指教


好好学C 天天向上
2006-03-22 14:03
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

TC没有连接浮点库,部分程序修改如下
[CODE]

void main()
{
int flag=-1;
float *n,t;
com *head,*p,*pr;

n=&t; /*连接浮点库*/
head=(com *)malloc(sizeof(com));
head->next=NULL;
pr=head;
……………………

[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-22 15:41
haishanglang
Rank: 1
等 级:新手上路
帖 子:378
专家分:0
注 册:2006-3-2
收藏
得分:0 
,测试了一下,发现 "3*2= " 运行错误,楼主的程序有问题啊

2006-03-22 19:29
sunnvya
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1094
专家分:0
注 册:2005-11-23
收藏
得分:0 
呵呵

http://www. 第二站>>>提供源码下载
2006-03-22 19:50
withoutme_hw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-19
收藏
得分:0 

嗯 ,3*2= 是有问题
我改过来了
谢谢提醒


好好学C 天天向上
2006-03-25 11:51
withoutme_hw
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-3-19
收藏
得分:0 
谢谢!
但是我还是不清楚为什么加一个n=&t
就可以用浮点型的了

好好学C 天天向上
2006-03-25 11:53
快速回复:浮点型 与 整型
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031842 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved