gpt4 book ai didi

c - 它没有在屏幕上打印正确的网格点数量?

转载 作者:行者123 更新时间:2023-11-30 18:07:33 25 4
gpt4 key购买 nike

  int n,m;           
float S,K,R,L,dr,dz;
S=4.0f;
K=2.0f;
R=1.0f;
L=2.0f;
dr=0.01f;
dz=0.1f;
n=int((R/dr)+1);
m=int((L/dz)+1);
printf("%d\t%d\t",n,m);

对于这个 iam 得到 10,20 个网格点,但实际上 n,m rply 的值应该是 11,21,对于 dr=0.01,其打印 n=101,除了“dr”的所有其他值,它打印少一个值就像 dr=0.1 n=10 ,dr=0.001 n=1000 但实际值​​为 1001。请解释一下先生,我已经尝试了一个月,但仍然没有得到正确的答案..

最佳答案

我并不完全清楚你的问题是什么,但你似乎对为什么 n 的值打印为 101 感到困惑。冒着指出显而易见的风险,你用纯粹的数学表达式来说就是:

n = (1.0 / .01) + 1

1 除以 0.01 等于 100。因此,即使消除浮点错误的可能性,答案 101 也是正确的。由于floating point error而打印值20(而不是“预期”21) 。如果添加以下语句,您可以更清楚地看到这一点:

printf( "%.15f\n", L / dz );

在我的机器上,它打印:

19.999999701976780

转换为 int 会导致计算该值的下限(20.999...转换为整数值时最终结果为 20)。

关于c - 它没有在屏幕上打印正确的网格点数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4448170/

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