【发布时间】:2016-05-19 17:44:10
【问题描述】:
我需要将字符串转换为浮点数。如果字符串不是数字,我希望返回 0。
我已尝试使用以下代码测试atof() 函数是否适用于此:
printf("%f", atof("1a"));
根据我对atof的理解,atof不能转换时返回的值为0,而这一行却打印了1.0。
为什么会这样?根据文档,我了解到 atof 意味着只要输入不是数字就返回 0。
【问题讨论】:
-
您最好使用:
strtod()。请注意atof()实际上返回的是double,而不是float。注意:函数:atof()会将1视为有效数字并返回转换结果:1.000000。它没有理由返回 0.000000,因为有一个有效的数字可以转换。