gpt4 book ai didi

c++ - 如何在 C++ 代码中暂时保持高分辨率精度

转载 作者:太空狗 更新时间:2023-10-29 21:27:59 25 4
gpt4 key购买 nike

抱歉,这与图像无关,我只是不知道如何正确地提出问题。

我的问题是,我正在编写 C++ 代码并进行计算。

a=b*cos(c)

b 随时间从零变化到其振幅,比如 bmax。 (实际上,b=bmax*sin(t)。)

但是,我发现当b很小的时候,结果a逐渐偏离了我的解析结果。

所以我想知道如何保持结果的高分辨率,以避免 float 被截断。

最佳答案

当您说它逐渐偏离时,这听起来像是您在那里累积了错误(尽管您发布的代码中没有任何明显的内容)。例如,这段代码错误会随着 while 循环的每次迭代而累积:

#include <iostream>

int main() {
unsigned short counter;
float val = 0;
while (counter++) {
val += 0.001f;
std::cout << val << "\n";
}
}

重写它的地方:

#include <iostream>

int main() {
unsigned short counter;
while (counter++) {
float val = counter * 0.001f;
std::cout << val << "\n";
}
}

不会导致这种错误累积,因为 val 仅取决于整数(可以精确表示)而不是 val 的先前值,每个值都会引入一些小错误。

关于c++ - 如何在 C++ 代码中暂时保持高分辨率精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082542/

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