atof() 用于 float 而不是 double

atof() for float instead of double

atof() returns 一个双精度数,当我将它分配给浮点值时会产生警告(是的,我肯定必须使用浮点数)。

所以我的问题是:是否有可用的 atof() 变体 returns 普通浮点数?还是我必须通过强制转换来解决这个问题——这很遗憾,因为它浪费资源来创建一个将立即被丢弃的替身。

改用strtof,它将return一个浮点数。

See documentation here

如果平台确实有直接的 "string to float" 转换例程并且编译器正在优化,它肯定会通过以下方式调用该转换例程:

char *buf = ...
float y; 
if (sscanf(buf, "%f", &y) == 1) Success();

如果没有,则使用

float y = (float)atof(buf);

请注意,编译器可以优化第二个代码以调用 "string to float",如果它违反了微妙的 double rounding,否则会出现在第二个代码中。