| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 9637 人关注过本帖
标题:[求助] 对于float变量取小数点后位数的问题
只看楼主 加入收藏
xfree007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-13
收藏
 问题点数:0 回复次数:8 
[求助] 对于float变量取小数点后位数的问题

问题,
将从键盘输入的实型十进制数分离为整数部分和小数部分输出。
如:输入123.45,输出为123.45=123+0.45

我已基本解决问题,可是最后一步卡壳了

代码如下:
main()
{
float a,c;
int b;
scanf(" %f",&a);
b=(int)a;c=a-b;
printf(" %f = %d + %f\n" ,a,b,c);
}

运行之后可以得出结果,但是不是123.45=123+0.45的形式,而是123.450000=123+0.450000的形式
关于这个,我知道 %f 变成 %.2f 之后,此例正确显示,但是要求中没有确定相应的小数点后位数,遇到更多位数的将会四舍五入,所以这个是不对的

求助:怎样才能输出实际数值?

搜索更多相关主题的帖子: float 变量 位数 小数点 
2007-09-21 14:06
我是菜鸟哦
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:921
专家分:209
注 册:2007-5-4
收藏
得分:0 
1.计算机是不会自动做四舍五入的变换的
2.计算机不是人,你要求输出float,它会按自己的方法输出小数点后6--7位的.

偶是菜鸟鸟偶惧WHO?!!!!
2007-09-21 19:47
xfree007
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-9-13
收藏
得分:0 

我并不需要四舍五入的变换,我需要的仅仅是输出的数值小数点后有几位就输出几位,不要再补零补满6位


2007年9月3日开始学C,请大家多多关照。。。。
2007-09-21 22:08
交流者
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-9-5
收藏
得分:0 
试试用g格式字符
2007-09-22 11:40
king0718
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-9-18
收藏
得分:0 
当字符处理~~~



==下~~我去编个~~

爱好程序设计者加~~QQ284779230
2007-09-22 11:56
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
printf(" %f = %d + %.2f\n" ,a,b,c);

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-22 11:59
king0718
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-9-18
收藏
得分:0 
#include"stdio.h"
#include"string.h"
int main()
{
char A[100];
int i,n,h;
scanf("%s",A);
n=strlen(A);
printf("%s=",A);
h=0;
for(i=0;i<n;i++)
{ if(A[i]=='.')h++;
if(h==0)printf("%c",A[i]);
else
{ if(h==1){ printf("+0."); h++; i++; }
printf("%c",A[i]);
}
}putchar(10);
return 0;
}

看看这个~~行不??

爱好程序设计者加~~QQ284779230
2007-09-22 12:03
josen0205
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:307
专家分:52
注 册:2007-5-8
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char num[64],d[64],buf[64];
char *in;

printf("Enter a number:");
gets(num);
strcpy(buf,num);

in=strtok(buf,"."); /* 提取整数部分 */
strcpy(d,"0.");
strcat(d,strtok(NULL,".")); /* 提取小数部分 */

printf("%s = %s + %s\n",num,in,d);

return 0;
}


只有想不到,没有做不到
2007-09-23 10:58
smile_line
Rank: 2
等 级:论坛游民
帖 子:65
专家分:19
注 册:2013-3-3
收藏
得分:0 
回复 2楼 我是菜鸟哦
不会自动四舍五入吗??

#include<stdio.h>
void main()
{
    float a;
    a=3.12356;
    printf("%.3f\n",a);
}

输出的是3.124啊
2013-03-18 00:17
快速回复:[求助] 对于float变量取小数点后位数的问题
数据加载中...
 
   



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

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