c - 为什么 %f 对于 print 语句中的大双数工作不正确?

标签 c gcc

double a = 1E100
printf("%f", a);

它似乎打印了一个不同的值,而不是 1 后跟 100 个零:

10000000000000000159028911097599180468360808563945281389781327557747838772170381060813469985856815104

这里可能存在什么问题?

最佳答案

double 类型,假设它使用 IEEE 754 double 浮点表示,仅保存大约 16 位十进制数字的精度。

因此,其后的任何十进制数字都只是一个近似值,即它可以表示的最接近1E100的值。

关于c - 为什么 %f 对于 print 语句中的大双数工作不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59842746/

相关文章:

c++ - 将 Vector 的第一个元素 move 到最后一个元素

c++ - C 和 C++ 编码标准

c - C 平台(H/W + S/W)是依赖的还是独立的

C 程序 - 令人困惑的输出

c - 定义具有多个步骤的函数宏

c - GCC_NO_EXECUTABLES ---交叉编译工具链后不允许进行链接测试

c - 为什么在释放指针后取消引用时会得到不同的结果?

c++ - ubuntu linux 上的 opengl - 链接器错误 : undefined references

c - 乘以无符号字符时溢出?

c - 程序的行为就像等待一个角色