atof()
返回一个双精度值,当我将它分配给浮点值时会导致警告(是的,我肯定必须使用浮点数)。
所以我的问题是:是否有atof()
可用的 -variant 返回一个普通的浮点数?还是我必须通过演员来解决这个问题 - 这将是一个遗憾,因为它浪费资源来创建一个将立即被丢弃的替身。
改为使用strtof
,它将返回一个浮点数。
如果平台确实有一个直接的“字符串到浮点”转换例程并且编译器正在优化,它肯定会通过以下方式调用该转换例程:
char *buf = ...
float y;
if (sscanf(buf, "%f", &y) == 1) Success();
如果没有,那么使用
float y = (float)atof(buf);
请注意,如果第二个代码违反了微妙的双舍入,则编译器可以优化第二个以调用“要浮动的字符串” ,否则该第二个代码会出现这种情况。