求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位
用C++编程。求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位数,所有的函数名称都为digitco...
用C++编程。求一个给定值的位数的函数,要求能够处理int,long,double,float类型的数据,若为浮点型只输出整数部分的位数,所有的函数名称都为digitcount.
展开
1个回答
展开全部
你的问法有点问题,
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);
}
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);
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询