关于用C语言求一个小数求小数点后面的位数多少的问题,求大神解答。

#include<stdio.h>//#include<math.h>voidmain(){floatnum;intflag=0;scanf("%f",&num);pri... #include<stdio.h>
//#include<math.h>

void main()
{
float num;
int flag=0;
scanf("%f",&num);
printf("%f\n",num);
printf("%d\n",flag);
num=num-(int)num;
printf("%f\n",num);
while(num>0)
{

num=num*10;
flag++;
num=num-(int)num;
printf("%f\n",num);
// printf("%d\n",flag);

}
printf("%d\n",flag);
}
我运行了这个,发现num的值后来会出现乱码 求解决
展开
 我来答
在大围山拉小提琴的冷杉
2014-02-18 · TA获得超过369个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:213万
展开全部
说句实话,如果是我,我绝对不会使用这种方式来计算。
因为float精确到小数点后6位。
我建议你通过这样的方式来计算:
不定义浮点数,而是定义字符串,然后从小数点开始计算后面的长度即可。

最主要的是假设你输入一个1.123456789123456789除了使用字符串的方式你无法通过正常的浮点数数据类型来精确计算。
share_fun1
推荐于2018-05-06 · TA获得超过608个赞
知道小有建树答主
回答量:298
采纳率:0%
帮助的人:351万
展开全部
这样肯定不行。
用double也好float也好,都存储的不是准确的值,都是一个近似值。用浮点型运算,结果每次运算都会产生误差,导致错误。

你还是用字符串输入,然后遍历这个串吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuxd7
2014-02-18 · TA获得超过323个赞
知道小有建树答主
回答量:452
采纳率:100%
帮助的人:271万
展开全部
去除末尾0后,用字符串比较好,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式