可以处理类似 123.45E-6之类的科学计数法的字符串
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
main()
{
double atof2(char s[]);
printf("%f\n",atof2("123.45E4"));
system("pause");
}
double atof2(char s[])
{
double val,power,endval=1.0;
int i,sign,exponent;
for(i=0;isspace(s[i]);i++)
;
sign=(s[i]=='-')?-1:1;
if(s[i]=='+'||s[i]=='-')
i++;
for(val=0.0;isdigit(s[i]);i++)
val=10.0*val+(s[i]-'0');
if(s[i]=='.')
i++;
for(power=1.0;isdigit(s[i]);i++)
{
val=10.0*val+(s[i]-'0');
power*=10.0;
}
val=sign*val/power;
// printf("%f\n",val);
if(s[i]=='e'||s[i]=='E')
i++;
sign=(s[i]=='-')?-1:1;
if(s[i]=='-'||s[i]=='+')
i++;
for(exponent=0;isdigit(s[i]);i++)
exponent= 10*exponent+(s[i]-'0');
for(i=0;i<exponent;i++)
endval=endval*10;
// printf("%f\n",val);
if(sign==-1)
endval=1.0/endval;
// printf("%f\n",endval);
return val*endval;
}
分享到:
相关推荐
函数名: atof 功 能: 把字符串转换成浮点数 用 法: double atof(const char *nptr); 程序例: #include #include int main(void) { float f; char *str = "12345.67"; f = atof(str); printf("string = %s ...
参考了一些网友的资料,自己动手写了四舍五入函数。代码如下: //num 是待四舍五入的数 //presion 是保留的小数位数 ... float result = atof((LPCTSTR)s); return result; //返回四舍五入后的数 }
1、CString to char* ...和第5个技巧一样,使用atof()函数可以转换成float型,例如: char c[10]; float f; f = atof(c); 7、Char* to int 和第5个技巧完全一样,例如: char *str = "100"; int i; i = atoi(str);
用 法: double atof(const char *nptr); 程序例: #include #include int main(void) { float f; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f); return 0; } ...
将字符转换为整型 例:char ch1;int i=atoi(ch1); atol();将字符转化为长整型 例:char ch2;long l=atol(ch2); atof();将字符转化为浮点型 例:char ch3;float f=atof(ch3); strtod(); 将字符串转化为双精度类型...
30.5 atof函数 30.6 atoi函数 30.7 atol函数 30.8 bsearch函数 30.9 div函数 30.10 exit函数 30.11 getenv函数 30.12 labs函数 30.13 ldiv函数 30.14 longjmp函数 30.15 mblen函数 30.16 mbstowes函数 30.17 mbtowc...
2.3 函数的参数为CHAR * 64 2.4 指针数组做为MAIN函数的形参 65 3 内存管理 65 3.1 作用域 65 3.1.1 auto自动变量 65 3.1.2 register寄存器变量 65 3.1.3 代码块作用域的静态变量 66 3.1.4 代码块作用域外的静态变量...
atoi函数、atol函数、atof函数:转换字符串 333 总结 336 第12章 结构体 339 12-1 结构体 340 数据关联性 340 结构体 342 结构体成员和运算符 344 成员的初始化 345 结构体成员和->运算符 346 结构体和...
c[m]=char(s+38); } else { jin=0; c[m]=char(s+48); } } if(jin==1) c[0]='1'; else c[0]=' '; if(g==1) { cout两数相加的结果为:"; if(f==0) for(i=0;i;i++) cout[i]; else { cout; for(i=0;i;i+...
infile.eof()) //当读到文件尾时,函数返回1;否则返回0 { p1=new Student1; infile>>buff; if(infile.eof()) break; p1->num=new char[strlen(buff)+1]; strcpy(p1->num,buff); infile>>buff; p1->...
(1)初始化函数Init的名字必须是文件名首字母大写+"_Init",上文c文件名是numsort.c, 故初始化函数名为Numsort_Init; ## 2 编译生成动态库 (1) 格式: gcc -fPIC -shared ____.c -o lib____.so ``` $ gcc -fPIC...
字符串转int int atoi(const char *string); _int64 _atoi64(const char *string); int _wtoi(const wchar_t *string); _int64 _ wtoi64(const...double atof(const char *string); double _wtof(const wchar_t *st
的函数原型为:sprintf( char *buffer, const char *format, [ argument] … );本句是将ad的值表示成有一位小数的浮点数,然后再在后面加上'v'和换行字符一起放到数组sendst中r 2、oldkey = 0; while (1) { if (GPIO...