c - atof() 的错误行为

标签 c atof

示例.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/

相关文章:

将字符串转换为 C 中的 double 变量

c - volatile 对数组和类型转换的意义

c - 如何使用按位运算符?

c - 堆栈处理函数参数的方式

c - 无法将 argv[] 中的内容转换为 C 中的 float[][]

c - 扫描、检查、转换、复制值...如何? - C -

c - 不包括 stdlib.h 不会产生任何编译器错误!

floating-point - atof 的奇怪行为

c - 如何使用 OpenMP 在顺序循环中嵌套并行循环

c - C中的字符串格式化