现在的位置: 首页 > 综合 > 正文

Linux应用开发—Linux下浮点数与字符串转换

2018年03月16日 ⁄ 综合 ⁄ 共 1224字 ⁄ 字号 评论关闭

1.atof(将字串转换成浮点型数)
功 能: 把字符串转换成浮点数
名字来源:ascii to floating point numbers 的缩写
相关函数 atoi,atol,strtod,strtol,strtoul
表头文件 #include <stdlib.h>
定义函数 double atof(const char *nptr);
函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。
返回值 返回转换后的浮点型数。
附加说明 atof()与使用strtod(nptr,(char**)NULL)结果相同。
程序例:

#include <stdlib.h> 
#include <stdio.h> 
int main() 
{ 
  float f; 
  char *str = "12345.67"; 
  f = atof(str); 
  printf("string = %s float = %f\n", str, f); 
  return 0; 
}

2.函数名: gcvt
功 能: 把浮点数转换成字符串,同时返回一个指向字符串的存储位置的指针。
用 法: char *gcvt(double value, int ndigit, char *buf);
包含头文件:<stdlib.h>

参数
value——被转换的值。
Digits——存储的有效数字位数。
Buffe——结果的存储位置。
返回值
返回一个指向结果的存储位置的指针[1]
说明
gcvt函数把一个浮点值转换成一个字符串(包括一个小数点和可能的
符号字节)并存储该字符串在buffer中。该buffer应足够大以便容纳转换
的值加上结尾的空字符('\0'),它是自动添加的。如果一个缓冲区的尺寸为
digits的尺寸+1,该函数覆盖该缓冲区的末尾。这是因为转换的字符串包
括一个小数点以及可能包含符号和指数信息。不提供上溢出。gcvt试图
以十进制格式产生digits数字,如果不可能,它以指数格式产生digits数字,
在转换时可能截除尾部的0。
程序例:

#include <stdlib.h>
#include <stdio.h>
int main(void)
{
	char str[25];
	double num;
	int sig = 5; /* significant digits */
	/* a regular number */
	num = 9.876;
	gcvt(num, sig, str);
	printf("string = %s\n", str);
	/* a negative number */
	num = -123.4567;
	gcvt(num, sig, str);
	printf("string = %s\n", str);
	/* scientific notation */
	num = 0.678e5;
	gcvt(num, sig, str);
	printf("string = %s\n", str);
	return(0);
}

抱歉!评论已关闭.