c++ - printf 在使用 %.22f 时更改值

标签 c++ c type-conversion

我对基本类型转换有疑问。

#include<stdio.h>

int main()
{
     printf("%.22f",0.30);
     return 1;
}

我得到的输出是 0.299999999999999888978

为什么 0.3 转换为较小的值

非常感谢任何帮助

南印度语

最佳答案

这是因为 0.30 无法用二进制 float 精确表示。 在内部,只能存储 0.30 的近似值。因此,当您全部打印出来时,您会得到一个略有不同的数字。

http://en.wikipedia.org/wiki/Floating_point

关于c++ - printf 在使用 %.22f 时更改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7736391/

相关文章:

c++ - 在编译时将枚举与模板类相关联

string - Julia:将数字字符串转换为 float 或 int

functional-programming - 为什么没有明确类型的这个 Idris 片段类型检查?

c++ - 在嵌套循环/循环不变量中检查一次

c++ - Linux中mremap函数的特点

c - "expected expression before char"内部函数

c - 当我运行代码时,出现段错误,但是当调试器运行它时,它说没有问题

c++ - 用 C++ 写一个 MIDI 文件

c++ - 文件输入/输出 C++

c - 是否有 GetThemeColor/Visual Styles API 的有效参数组合列表