Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
样本.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 是使用浮点数可以达到的最接近 111.1 的位置。但即使是双精度数也不能表示 111.1,如果您使用更多小数位打印它的值,您会发现。请参阅 Sohil Omer 引用的参考资料。
使用这个,因为 atof 返回 double ,参考atof() 的手册页
double f = atof(str);
有关更多信息, C 中的 Double 与 Float