永发信息网

怎样从小数中取出各位数,如63.55分别取出:6,3,5,5,请教各位大虾,高手点拨点拨,谢谢。。。。

答案:6  悬赏:60  手机版
解决时间 2021-03-27 09:07
  • 提问者网友:暗中人
  • 2021-03-26 21:28
怎样从小数中取出各位数,如63.55分别取出:6,3,5,5,请教各位大虾,高手点拨点拨,谢谢。。。。
最佳答案
  • 五星知识达人网友:拜訪者
  • 2021-03-26 22:31
#include
#include

int main()
{
int s1, s2, s3, s4;
s1 = (int)(63.55/10);
cout< s2 = (int)((63.55-s1*10)/1);
cout< s3 = (int)((63.55-s1*10-s2)/0.1);
cout< s4 = (63.55-s1*10-s2-s3*0.1)/0.01;
cout< return 0;
};
我的程序在运行到最后的时候,小数点后面第二位如果是4和5的时候,总是出现减1现象也就是说如果是63.55,最后是6、3、5、4,如果是63.54的话,就是6、3、5、3其他的数字都不会有事的···
全部回答
  • 1楼网友:七十二街
  • 2021-03-27 00:34
1楼的思路是对的,但程序只能执行两位小数的,我的意思加入用循环对小数位数的判断,然后用循环乘以对应的10的幂,在做提取数字。具体算法还是楼主自己思考,编程的乐趣就在于此
  • 2楼网友:街头电车
  • 2021-03-27 00:19
我大概提供一个思路:
用一个int强制转化 分离出整数和小数。
整数部分除10求余数 。。一步得到一个数字。
小数部分乘以10求整数部分 也是一步得到一个。。
  • 3楼网友:玩世
  • 2021-03-26 23:30
#include
int main()
{
float f = 63.55;
int i;
f *= 100;
int nf = (int) f;
for(i = 1; i <= 4; ++i)
{
printf("%d ",nf%10);
nf /= 10;
}
return 0;
}
  • 4楼网友:天凉才是好个秋
  • 2021-03-26 22:44
可以转成字符串,然后再用sscanf取
转字符串的函数忘了,找下
====给个例子
#include
void main()
{
float temp=65.33;
int a,b,c,d;
char p[10]={0};

sprintf(p,"%.2f",temp); //转字符串
printf("string is %s\n",p);//打印字符串

sscanf(p,"%1d%1d.%1d%1d",&a,&b,&c,&d);//读数字
printf("%d,%d,%d,%d\n",a,b,c,d);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯