示例.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)
请建议我是否遗漏了什么。 提前致谢。
最佳答案
从 float 更改为 double 有一点帮助,但并不能“解决”“问题”。首先,没有问题,只是感觉有问题。正如 Dayal Rai 所说,111.099998 是使用 float 可以得到的最接近 111.1 的值。但即使是 double 也不能表示 111.1,如果使用更多小数位打印它的值,您会发现这一点。请参阅 Sohil Omer 引用的引用文献。
关于c - atof() 的错误行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31380332/