C:从String转换为Double会产生奇怪的结果

时间:2013-11-10 17:04:31

标签: c floating-point

我想将字符串转换为浮点值。看看我的小程序:

#include <stdio.h>

int main() {
        char string[3] = "42";
        double value = atof(string);
        printf("Floating-point value: %f\n", value);
        return 0;
}

当我运行它时,我明白了:

Floating-point value: 327680.000000

为什么呢?使用atoi从字符串到整数的转换效果非常好!

如果你知道为什么会这样,请分享你的智慧。 :)

1 个答案:

答案 0 :(得分:4)

char string[2] = "42";

应该是

char string[3] = "42";

"42"数组的大小为3个字节,因为您必须计算尾随空字符。如果您希望使用char string[2]进行声明,则string将不会以空值终止。

然后你必须包含stdlib.h atof声明的文件:

#incude <stdlib.h>