atof函数
原型:double atof( const char *string );
ASCII to float
作用:将字符串转为双精度浮点数double类型
atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数str
字符串可包含正负号、小数点或E(e)来表示指数部分,如123. 456 或123e-2。
【返回值】返回转换后的浮点数;如果字符串 str 不能被转换为 double,那么返回 0.0。温馨提示:ANSI C 规范定义了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习;使用
atof() 与使用 strtod(str, NULL) 结果相同。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull()。
有时在转换时,如果换个编译环境可能会出现“Error:不存在从CString到const char的适当转换函数”的错误提醒。这时会有两个解决办法。
1.项目字符集从“使用Unicode字符集”改为“使用多字字符集”。具体位置在:项目-属性-配置属性-常规-字符集。
2.用_ttof代替atof 或 _wtof(str)。注意使用_ttof()函数,需要包含stdlib.h文件,可以将CString类型转换为浮点型数据。
double PI =3.14159;
CString str ;
str.Format("使用小数形式输出:%.2f”,PI);//这样,str里存放的就是PI的值,是字符型的
PPI = _ttof((LPCSTR)s);// 如此,就把PI=3.14159保留到两位小数了
参考博客:
1)https://blog.csdn.net/sikong00/article/details/53726702
2)https://www.cnblogs.com/fwy-walking/p/4020637.html
3)https://blog.csdn.net/dang_guoying/article/details/54575332