C语言中如何将变量123.4的个位、十位、百位、小数位分别取出来

来源:百度知道 编辑:UC知道 时间:2024/06/10 00:43:27

楼上的注意是123.4,那样表示不正确。而且十位的表达也错了。

#include<stdio.h>
void main()
{
int xi,ge,sh,ba,t;
t=(int)(123.4);
ge=t%10;
sh=t/10%10;
ba=t/100;
xi=(123.4-t)*10;
printf("%d %d %d %d\n",ge,sh,ba,xi);
}

如果不考虑异常情况的话,给你写个简单点的函数吧
这个函数非常简单,不考虑输入异常,不考虑负数问题,不考虑double的精度问题,不考虑溢出等等..........
当bit为0,表示个位,-1表示小数点后1位,1表示十位,依次.........
unsigned int GetNumber(double value,int bit)
{
//前面是异常处理
int nTemp=int(value/pow(10,bit))-int(value/pow(10,bit+1))*10;
return nTemp;
}

其中int(...)是强制转换,c++这么用,c的话得(int)(....)
异常处理部分如果考虑得不多得话就是考虑下极限情况,比如是否溢出最高位或最低位等等,这个就很容易了.....

pow函数是乘方函数,pow(x,y)表示x的y次幂
参数里面value一定用double,否则你光调用Get....(123.45,-2)就不一定什么结果了,(精度转换缺失问题)。
上面那个调用的结果是5,表示取小数点后第二位的数字

多说两句,如果换成字符串的话还是要解析的,因为有小数部分,还是这么做简单高效,还有楼上几个都不大对

用sprintf函数或itoa函数把它变成字符串去处理

例如:
#include <stdio.h>
#include <coni