atof()
返回一个double,当我将它赋给float-value时会产生警告(是的,我肯定要使用float)。
所以我的问题是:是否有atof()
- 变体可用,它返回一个普通浮点数?或者我必须通过演员来解决这个问题 - 这将是一个遗憾,因为它浪费资源来创建一个将立即扔掉的双倍。
答案 0 :(得分:4)
使用strtof
代替,它将返回一个浮点数。
答案 1 :(得分:0)
如果平台确实有一个直接的"字符串浮动"转换例程和编译器正在优化,它肯定会通过以下方式调用该转换例程:
char *buf = ...
float y;
if (sscanf(buf, "%f", &y) == 1) Success();
如果没有,请使用
float y = (float)atof(buf);
注意第二个可以由编译器优化,以调用"字符串浮动"如果它违反了第二个代码否则会发生的微妙double rounding。