永发信息网

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

答案:6  悬赏:60  手机版
解决时间 2021-03-27 09:07
怎样从小数中取出各位数,如63.55分别取出:6,3,5,5,请教各位大虾,高手点拨点拨,谢谢。。。。
最佳答案
#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楼的思路是对的,但程序只能执行两位小数的,我的意思加入用循环对小数位数的判断,然后用循环乘以对应的10的幂,在做提取数字。具体算法还是楼主自己思考,编程的乐趣就在于此
我大概提供一个思路:
用一个int强制转化 分离出整数和小数。
整数部分除10求余数 。。一步得到一个数字。
小数部分乘以10求整数部分 也是一步得到一个。。
#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;
}
可以转成字符串,然后再用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);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
新鲜皂刺和干皂刺的区别
总浪费东西
谁懂古钱币报价
火腿苦瓜炒蛋怎么做
电脑开机出现小短线
在丈夫眼前被侵犯-侵入者"系列作品
男子租9万洋房白蚁肆虐 白蚁会咬人吗
永恒之塔 守护天使阿列特怎么得
湘潭易俗河名称的由来?
五代十国为什么那么乱啊?
傲娇男神住我家:99次说我爱你
春占生女是什么意思
李商隐的<<牡丹>>的意思和赏析
开博尔Q7和oppo103D都是怎么升级的,有没有在
到香港的通行证2次用完了,续签一年能续签几
推荐资讯
-2.6是非负整数么
写白云,阳光的句子
外婆耳朵这几天突然听不到
马上要离开现在的公司了,想送同事一些小礼物
绿灯还有5秒,在半路停车,因前方车辆堵车。
青海酸奶,尕龙和小西牛哪个牌子更正宗
浴池更衣室的椅子怎么坐
含有开辟的成语有哪些
格斗战神手游 怎么升东西
苏轼的山水田园诗有那些
微星GTX660(N660HAWK)和微星HD7870HAWK选哪个
在百度提问" 哪一种种子搜索神器可以搜索后就
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?