C语言中如何将小数点部分一位一位取出?

一个数字,比如314.4156怎么才能把6,5,1,4一位一位取出来?算法越简单越好!编译失败。。。错误noname.c14:非法地使用浮点数在main函数中警告nona... 一个数字,比如314.4156
怎么才能把6,5,1,4一位一位取出来?
算法越简单越好!
编译失败。。。
错误 noname.c 14: 非法地使用浮点数在 main 函数中
警告 noname.c 15: 可能在'bit'定义以前使用了它在 main 函数中
警告 noname.c 22: 'n' 被赋值但却没有使用在 main 函数中
用 win-tc编译的
展开
 我来答
wuiiao333
推荐于2017-09-17 · TA获得超过799个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:196万
展开全部
int n=5;
double x=3.141592654;
while(n>0) //取出小数后n位
{
x=x*10; //更新x值,把小数点后第一位放在个位上
printf("%d\n",(int)x%10); //int强制把double转换成int,因为求余必须为int类型, //而%10求余,是求个位上的数字
i--;

}
尤永修喻辰
2019-10-26 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:1180万
展开全部
在输出时,小数点算做一位.a++不能被赋值,程序有误,应少写一个加号,a=a+=5;.十进制-16在计算机里是这么表示的,16的二进制码是0000000000010000,若要表示-16,则将16的二进制码取反,得到1111111111101111,再将此数加1,得到1111111111110000,111111110000就是-16在计算机内存中存储形式,称为补码.由于%u表示无符号的整数所以第一位不是符号判断位,所以他会将补码认为是一个正整数,所以此二进制值化为十进制是4294967280.所以%u表示-16的值为4294967280.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cyf_mz
2006-06-23
知道答主
回答量:8
采纳率:0%
帮助的人:7万
展开全部
main()
{
double n=314.4156;
int a,b,c,d;
long t;
t=n*1000;
a=t%10;
b=(t/10)%10;
c=(t/100)%10;
d=(t/1000)%10;
printf("%d,%d,%d,%d\n",a,b,c,d);
}
输出结果应该就跟你要的一样。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
richardbao2000
2006-06-22 · TA获得超过5341个赞
知道大有可为答主
回答量:4457
采纳率:100%
帮助的人:3840万
展开全部
double n = 314.4156;
int i;
int bit;
for(i = 1; i <= 4; i++)
{
bit = (int)(n * 10 ^ i) % 10;
printf("%d", bit);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寻越默1878
2006-06-23 · 超过54用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:168万
展开全部
修改了楼上的代码
t=n*1000 改为 t = n*10000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式