扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
C语言中无符号整型转换成浮点型方法如下:
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、阿勒泰网站维护、网站推广。
unsigned
int
x=123;
1、输出强制转换,如:
printf("%f",
x
);
//这样的输出因为%f与x的类型不同,导致输出数据异常
printf("%f",
(float)x
);
//强制转换成浮点型,可正确输出
2、存储到相应的变量中,如:
float
fVal;
fVal=x
;
//系统会隐式转换
因float的有效数位最大为7位,所以,并不是所有整数都可以用float类型变量来表示,所以,最好使用double类型来存储任意的整数
printf("%f",
fVal
);
//输出正常
double
dVal;
dVal=x
;
//系统会隐式转换
printf("%f",
dVal
);
//输出正常
可以采用库函数atof, 头文件为#include stdlib.h
函数名: atof
功 能: 把字符串转换成浮点数
用 法: double atof(const char *nptr);
实例:
#includestdlib.h
#includestdio.h
intmain()
{
double d;
char*str="12345.67";
d=atof(str);
printf("string=%sdouble=%lf\n",str,d);
return 0;
}
C语言中将字符串转型化为浮点型数据的函数有:atof()
和
strtod()
头文件:
#include stdlib.h
函数原型:
double atof (const char* str);
【参数说明】str 为要转换的字符串。
【函数说明】atof() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数str 字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。
【返回值】返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。
double strtod (const char* str, char** endptr);
【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。
【函数说明】strtod() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。参数 str 字符串可包含正负号、小数点或E(e)来表示指数部分。如123. 456 或123e-2。
若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。
【返回值】返回转换后的浮点型数;若不能转换或字符串为空,则返回 0.0。
使用 atof( str ) 与使用 strtod(str, NULL) 结果相同。
一般应用方法为:
char str[]="123.45";
double d=atof(str);
printf("%.2lf", d ); //输出123.45
C语言有以下几种取整方法:
1、直接赋值给整数变量。如:
int i = 2.5; 或 i = (int) 2.5;
这种方法采用的是舍去小数部分,能用于你的问题。
2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),而下面介绍的取整函数返回值是double。整数除法对正数的取整是舍去小数部分,能用于你的问题。不过整数除法对负数的取整结果和使用的C编译器有关。
3、使用floor函数。floor(x)返回的是小于或等于x的最大整数。如:
floor(2.5) = 2
floor(-2.5) = -3
4、使用ceil函数。ceil(x)返回的是大于x的最小整数。如:
ceil(2.5) = 3
ceil(-2.5) = -2
floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2。floor函数能用于你的问题。
5、
int b = (int)a;//取整
int c = (int)(a+0.5);//四舍五入
用atoi函数将字符串转换成整形,然后再用整形转换为浮点型。
atoi C语言库函数名: atoi 功 能: 把字符串转换成整型数. 名字来源:array to integer 的缩写. 原型: int atoi(const char *nptr); 函数说明: 参数nptr字符串,如果第一个非空格字符不存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字或结束符 \0 时停止转换,返回整型数。 头文件: #include stdlib.h 程序例: 1) #include stdlib.h #include stdio.h int main(void) { int n; char *str = "12345.67"; n = atoi(str); printf("string = %s integer = %d\n", str, n); return 0; } 执行结果 string = 12345.67 integer = 12345
c语言, sscanf 可以转数值字符串 为 数值。
第2个数值起,定位用:“如果前一个字符是空白,后一个是数字,就是数的开始”
n -- 帮你统计个数,若想把数据存入数组,则可以用n为下标。
#include stdio.h
#include stdlib.h
main()
{
char str[100]="123 667.23 54e-2";
int i,L,n=0;
double y;
L = strlen(str);
if (sscanf(str,"%lf",y)){ printf("%g ",y);n++;} // 取第一个数值
for (i=1;iL;i++)
if (str[i]==' ' (str[i+1]='0' str[i+1]='9')) {
sscanf(str[i+1],"%lf",y);
printf("%g ",y);
n++;
}
printf("-- total %d data I have read\n",n);
return 0;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流