gpt4 book ai didi

c - 1 除以非常大的数返回 0, C

转载 作者:行者123 更新时间:2023-11-30 17:49:53 24 4
gpt4 key购买 nike

我决定发布这个问题,因为我不确定为什么会得到这个结果。我在这个网站和其他网站上进行了研究,但没有找到解决方案。很抱歉,如果我违反了该网站的规则,但请记住,我是新来的。这是用 C 编写的函数代码,返回意外结果:

double gauss (double average, double variance, int data)
{
double model,power;
power = ((((data-average)*(data-average))/(2*variance))*(1));
model = (pow(E,(int)power));
return 1.0/model;
}

我不知道是否应该发布其余的代码,但如果你愿意的话我会的,我只是想让帖子简短一些。 1.0/model 会出现此问题,因为 model 是一个非常大的数字。

最佳答案

C double 的精度有限,因此如果将 1.0 除以一个非常大的 double ,则精度误差将为 0(实际上,实际答案非常接近于零,以至于精度误差将四舍五入到零)。

您可以尝试使用 long double 来获得更高的精度,但我认为您最好使用任意精度库,例如 GMP .

关于c - 1 除以非常大的数返回 0, C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583015/

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