gpt4 book ai didi

c - 浮点乘法在 C 中的意外输出

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:55 27 4
gpt4 key购买 nike

我在 C 中执行乘法和加法运算,但得到了错误的结果。

我正在执行以下操作:

#include <stdio.h>
#include <strlib.h>
#include <math.h>

int main()
{
float** fpimag;
float** fpreal;

// Some code to assign fpimag and fpreal
// fpimag and fpreal are two dimensional arrays that are
// passed by reference to some functions to assign data to them
allocatememory(&fpimag,&fpreal);
storedata(&fpimag,&fpreal);


autofunction(&fpimag,&fpreal);
} // main()

void autofunction(float*** fpimag,float***fpreal) {
float expreal;
float expimag;

expreal = cos((*afph_correct)[row][column]);
expimag = sin((*afph_correct)[row][column]);

(*fpimag)[row][column] = (*fpimag)[row][column] * expreal + (*fpreal)[row][column] * expimag;

printf("Operation looks like this\n");
printf("%f*%f + %f*%f\n",(*fpimag)[row][column],expreal,(*fpreal)[row][column],expimag);
printf("The value is %f\n",(*fpimag)[row][column]);
} // autofunction

这是我得到的输出:

Operation looks like this
-0.003095*-0.431162 + 0.000027*-0.902275
The value is 0.003865

然而正确答案应该是:

0.0013101

谢谢!

最佳答案

试试 long double,比 float 更精确: http://en.wikipedia.org/wiki/Long_double

请注意,您应该更改您的 printf(%Lf 表示 long double)

关于c - 浮点乘法在 C 中的意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987547/

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