atof的错误行为()

时间:2015-07-13 09:57:31

标签: c atof

Sample.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)

请告知我是否遗漏了一些东西。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用此功能,因为atof返回double,参考Man Page of atof()

double f = atof(str);

欲了解更多信息, Double vs Float in C

答案 1 :(得分:1)

从浮动变为双重有点帮助,但没有解决&#34; &#34;问题。&#34;首先,没有问题,只是认为有一个问题。正如Dayal Rai所说,111.099998是最接近111.1使用浮动的。但即使是双倍也不能代表111.1,因为如果使用更多的小数位打印它的值,你会发现。参见Sohil Omer引用的参考文献。