gpt4 book ai didi

c - 为什么最右边的数字不是零(C/Linux)?

转载 作者:太空狗 更新时间:2023-10-29 15:51:01 24 4
gpt4 key购买 nike

如果您打印的 float 比存储在内存中的精度更高,那么多余的地方不应该包含零吗?我有这样的代码:

double z[2*N]="0";
...
for( n=1; n<=2*N; n++) {
fprintf( u1, "%.25g", z[n-1]);
fputc( n<2*N ? ',' : '\n', u1);
}

它正在创建这样的输出:

0,0.7071067811865474617150085,....

float 应该只有 17 位小数(对吗?53 位不等于 17 位小数)。如果是这样,那么第 18 位、第 19 位……第 25 位应该为零。请注意,在上面的输出中,它们中有 0 以外的数字。

我是不是误会了什么?如果是,是什么?

最佳答案

不,53 位意味着 17 位小数是您可以信任的,但是因为我们使用的 base-10 表示法与存储 double 的基数(二进制)不同,后面的数字只是因为 1/2^53 不完全是 1/10^n,即,

1/2^53 = .0000000000000001110223024625156540423631668090820312500000000

关于c - 为什么最右边的数字不是零(C/Linux)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13759961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com