-3

样本.c:

#include<stdio.h>
#include<stdlib.h>

main()
{
    char str[10] = "111.1";
    float f = (float)atof(str);
    printf ("\n (%s  ,  %f) \n",str,f);
}

上述代码的输出是: (111.1 , 111.099998)

请建议我是否遗漏了什么。提前致谢。

4

2 回答 2

1

从 float 更改为 double 会有所帮助,但不能“解决”“问题”。首先,没有问题,只是感觉有问题。正如 Dayal Rai 所说,111.099998 是使用浮点数可以达到的最接近 111.1 的位置。但即使是双精度数也不能表示 111.1,如果您使用更多小数位打印它的值,您会发现。请参阅 Sohil Omer 引用的参考资料。

于 2015-07-13T15:10:08.447 回答
1

使用这个,因为 atof 返回 double ,参考atof() 的手册页

double f = atof(str);

有关更多信息, C 中的 Double 与 Float

于 2015-07-13T10:10:46.557 回答