atof()用于float而不是double

时间:2016-12-07 08:40:32

标签: c ansi-c atof

atof()返回一个double,当我将它赋给float-value时会产生警告(是的,我肯定要使用float)。

所以我的问题是:是否有atof() - 变体可用,它返回一个普通浮点数?或者我必须通过演员来解决这个问题 - 这将是一个遗憾,因为它浪费资源来创建一个将立即扔掉的双倍。

2 个答案:

答案 0 :(得分:4)

使用strtof代替,它将返回一个浮点数。

See documentation here

答案 1 :(得分:0)

如果平台确实有一个直接的"字符串浮动"转换例程和编译器正在优化,它肯定会通过以下方式调用该转换例程:

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

如果没有,请使用

float y = (float)atof(buf);

注意第二个可以由编译器优化,以调用"字符串浮动"如果它违反了第二个代码否则会发生的微妙double rounding