gpt4 book ai didi

c - 0.00001 增量

转载 作者:行者123 更新时间:2023-12-04 07:33:32 26 4
gpt4 key购买 nike

我是 C 的初学者,我正在尝试在 While 循环中进行 0.00001 增量。例如,double t = 0.00001 并且我希望循环每次以 0.00001 的增量运行,第二次是 0.00002 等等。
有人可以帮忙吗?
这是我正在调试的代码的一部分。我正在尝试运行模拟,直到 v 变为负值。每次 While 循环为真并重复时,我希望它添加 0.00001 的增量

    t = 0.00001; 
f = fMid;
v = v0;
x = 0;

// 10.2 Calculate the simulated stopping distance
while( v >= 0)
{
a = - f - (C_d)*(v*v);

// Calculate the new position
x_new = x + (v*t);

// Calculate the new velocity
v_new = v + (a*t);

x = x_new;
v = v_new;

++t;
}

最佳答案

由于浮点运算不精确(请参阅 Is floating point math broken? )“幼稚”的方法,例如:

double t = 0.0;
while (t < N) { // Or your specific condition here
t += 0.00001;
}
可能无法正常工作,可能存在以下问题:
  • 在每次迭代中,由不精确计算引起的误差会累积,并且循环越长,误差就会越大。
  • 在某些时候,数字 tt+0.00001可能会变得相等,因为 double代表可能无法区分它们。

  • 为了防止(2)并最小化(1)的影响,可以使用整数计数器代替并重新计算 t的值。在每个循环中基于它:
    unsigned int ii = 0;
    double t;
    while (ii < N) { // Or your specific condition here
    t = ii * 0.00001;
    ii ++;
    }

    关于c - 0.00001 增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67838747/

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