8

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

所以我的问题是:是否有atof()可用的 -variant 返回一个普通的浮点数?还是我必须通过演员来解决这个问题 - 这将是一个遗憾,因为它浪费资源来创建一个将立即被丢弃的替身。

4

2 回答 2

5

改为使用strtof,它将返回一个浮点数。

在此处查看文档

于 2016-12-07T08:43:39.200 回答
0

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

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

如果没有,那么使用

float y = (float)atof(buf);

请注意,如果第二个代码违反了微妙的双舍入,则编译器可以优化第二个以调用“要浮动的字符串” ,否则该第二个代码会出现这种情况。

于 2016-12-07T13:57:48.043 回答