atof() 用于 float 而不是 double
atof() for float instead of double
atof()
returns 一个双精度数,当我将它分配给浮点值时会产生警告(是的,我肯定必须使用浮点数)。
所以我的问题是:是否有可用的 atof()
变体 returns 普通浮点数?还是我必须通过强制转换来解决这个问题——这很遗憾,因为它浪费资源来创建一个将立即被丢弃的替身。
改用strtof
,它将return一个浮点数。
如果平台确实有直接的 "string to float" 转换例程并且编译器正在优化,它肯定会通过以下方式调用该转换例程:
char *buf = ...
float y;
if (sscanf(buf, "%f", &y) == 1) Success();
如果没有,则使用
float y = (float)atof(buf);
请注意,编译器可以优化第二个代码以调用 "string to float",如果它违反了微妙的 double rounding,否则会出现在第二个代码中。
atof()
returns 一个双精度数,当我将它分配给浮点值时会产生警告(是的,我肯定必须使用浮点数)。
所以我的问题是:是否有可用的 atof()
变体 returns 普通浮点数?还是我必须通过强制转换来解决这个问题——这很遗憾,因为它浪费资源来创建一个将立即被丢弃的替身。
改用strtof
,它将return一个浮点数。
如果平台确实有直接的 "string to float" 转换例程并且编译器正在优化,它肯定会通过以下方式调用该转换例程:
char *buf = ...
float y;
if (sscanf(buf, "%f", &y) == 1) Success();
如果没有,则使用
float y = (float)atof(buf);
请注意,编译器可以优化第二个代码以调用 "string to float",如果它违反了微妙的 double rounding,否则会出现在第二个代码中。