| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1842 人关注过本帖
标题:浮点转化字符的问题
只看楼主 加入收藏
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
 问题点数:0 回复次数:31 
浮点转化字符的问题

有时产生误差,例如输入1。123,就输出1。1229999999,有没有解决法。
#include<stdio.h>
#include<conio.h>
int main()
{
int a,b,i,j=0,flag=1;
double m;
char c[80];
scanf("%lf",&m);
b=a=(int)m;
if(m<0)
{flag=-1;a*=-1;b*=-1;j=1;}
if(a==0)
{ if(flag==1)
{c[0]='0';i=1;}
else
{c[0]='-';c[1]='0';i=2;}
}
else{
while(a!=0)
{a=a/10;j++;}
for(i=0;i<j;i++)
{ c[j-i-1]=b%10+'0';b/=10;}
if(flag==-1)
c[0]='-';
}
c[i]='.';
j=1;

m=(m-(int)m);
if(flag==-1)
m=(m-(int)m)*-1;
while(1)
{
b=(int)(m*10);
m=m*10-b;
c[i+1]=b+'0';
i++;
if(j==10)/*限制小数个数*/
{c[i+1]=0;break;}
j++;
}
printf("\n%s\n",c);
getch();
return 0;
}

[此贴子已经被作者于2006-10-27 12:10:06编辑过]

搜索更多相关主题的帖子: 字符 int include flag double 
2006-10-27 12:07
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用C语言学习者在2006-10-27 12:07:35的发言:

有时产生误差,例如输入1。123,就输出1。1229999999,有没有解决法。
#include<stdio.h>
#include<conio.h>
int main()
{
int a,b,i,j=0,flag=1;
double m;
char c[80];
scanf("%lf",&m);
b=a=(int)m;
if(m<0) /*对负数控制*/
{flag=-1;a*=-1;b*=-1;j=1;}
if(a==0) /*对零控制*/
{ if(flag==1)
{c[0]='0';i=1;}
else
{c[0]='-';c[1]='0';i=2;}
}
else{
while(a!=0) /*对整数控制*/
{a=a/10;j++;}
for(i=0;i<j;i++)
{ c[j-i-1]=b%10+'0';b/=10;}
if(flag==-1)
c[0]='-';
}
c[i]='.';
j=1;

m=(m-(int)m);
if(flag==-1)
m=(m-(int)m)*-1;
while(1) /*对小数部分控制*/
{
b=(int)(m*10);
m=m*10-b;
c[i+1]=b+'0';
i++;
if(j==10)/*限制小数个数*/
{c[i+1]=0;break;}
j++;
}
printf("\n%s\n",c);
getch();
return 0;
}



谁有强殖装甲第二部,可以Q我460054868
2006-10-27 12:32
我不是郭靖
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:494
专家分:6
注 册:2006-10-4
收藏
得分:0 

不能解决误差问题


2006-10-27 14:41
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
先谢谢我不是郭靖回答。编出另一个浮点转化字符程序也可以,最好决解误差的程序。

谁有强殖装甲第二部,可以Q我460054868
2006-10-27 16:22
hackboyo
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2006-10-27
收藏
得分:0 
这种误差 是免不了的吧
2006-10-27 16:23
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
这个,你们可以把关于浮点转化字符程序供上来也可以,不同方法也解决也是好事。

谁有强殖装甲第二部,可以Q我460054868
2006-10-27 16:27
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 

没有人回答吗,不同算法也可以。解决便好。


谁有强殖装甲第二部,可以Q我460054868
2006-10-27 17:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
对整数部分取余,分数部分*10取整.
可以参照一下,那个千分位帖.

倚天照海花无数,流水高山心自知。
2006-10-27 17:48
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 

在那里?


谁有强殖装甲第二部,可以Q我460054868
2006-10-27 17:49
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
while(j<i)
{
str2[j]=str1[i-j];
j++;
}
str2[j++]='.';
while(1)//处理小数
{
m=m*10;
t=(int)m;
str2[j]=t+'0';
m-=t;
j++;
count++;
if(count>8) /*设置精度*/
{
break;
}
}
str2[j]='\0';
分别考虑正负数.

倚天照海花无数,流水高山心自知。
2006-10-27 18:24
快速回复:浮点转化字符的问题
数据加载中...
 
   



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

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