求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位

用C++编程。求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位数,所有的函数名称都为digitco... 用C++编程。求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位数,所有的函数名称都为digitcount. 展开
 我来答
doufuliu
2010-10-23 · 超过30用户采纳过TA的回答
知道答主
回答量:79
采纳率:0%
帮助的人:72.3万
展开全部
你的问法有点问题,

int的取值范围是-32768~32767
long的取值范围是 64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,808

float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
double的范围为-2^1024 ~ +2^1023

两个的取值范围已经无法直接打印取得,只能使用编译器内置的强制转换解决

代码如下:

int digitcount(int i){
//type int
char str[127];
sprintf(str,"%d\0",i);
return strlen(str);
}
int digitcount(long i){
//type long
char str[127];
sprintf(str,"%ld\0",i);
return strlen(str);
}
int digitcount(float i){
//type float
//不能使用 sprintf( str,"%3.0f",i),float取值无法确定长度
char str[127];
//让编译器去取舍吧
long m = (int)i;
sprintf(str,"%ld\0",m);
return strlen(str);
}

int digitcount(double i){
//type double
//不能使用 sprintf( str,"%3.0f",i),double取值无法确定长度
char str[127];
//让编译器去取舍吧
long m = (int)i;
sprintf(str,"%ld\0",m);
return strlen(str);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式