gpt4 book ai didi

c - 在 MATLAB 和 C 中四舍五入到所需的数字

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:37 24 4
gpt4 key购买 nike

我已经阅读了有关在 C 中实现舍入的问题,受 MATLAB 舍入函数的启发,我听从了他们的建议,但结果根本不是它应该是的。这是我关于此问题的部分代码:

    movmean_h[i]=(double)sum/(f-b);
mexPrintf("\t movmean_h[%d]=%e",i,movmean_h[i]);
movmean_h[i]=(double)round(movmean_h[i]*n)/n;
mexPrintf("\t movmean_h[%d]=%e",i,movmean_h[i]);

部分结果是这样的(这段代码是循环运行的):

 movmean_h[10261]=2.283693e-13   movmean_h[10261]=1.668138e-06
movmean_h[10261]=2.283693e-13 movmean_h[10261]=1.668138e-06
movmean_h[10262]=2.288172e-13 movmean_h[10262]=1.483963e-06
movmean_h[10263]=2.292687e-13 movmean_h[10263]=-8.838173e-07
movmean_h[10264]=2.297219e-13 movmean_h[10264]=0.000000e+00
movmean_h[10265]=2.292835e-13 movmean_h[10265]=2.138378e-06
movmean_h[10266]=2.288319e-13 movmean_h[10266]=1.409754e-06
movmean_h[10267]=2.283839e-13 movmean_h[10267]=0.000000e+00
movmean_h[10268]=2.279412e-13 movmean_h[10268]=-2.147484e-06
movmean_h[10269]=2.275056e-13 movmean_h[10269]=-2.147484e-06
movmean_h[10270]=2.270787e-13 movmean_h[10270]=-2.147484e-06
movmean_h[10262]=2.288172e-13 movmean_h[10262]=1.483963e-06
movmean_h[10263]=2.292687e-13 movmean_h[10263]=-8.838173e-07
movmean_h[10264]=2.297219e-13 movmean_h[10264]=0.000000e+00
movmean_h[10265]=2.292835e-13 movmean_h[10265]=2.138378e-06
movmean_h[10266]=2.288319e-13 movmean_h[10266]=1.409754e-06
movmean_h[10267]=2.283839e-13 movmean_h[10267]=0.000000e+00
movmean_h[10268]=2.279412e-13 movmean_h[10268]=-2.147484e-06
movmean_h[10269]=2.275056e-13 movmean_h[10269]=-2.147484e-06
movmean_h[10270]=2.270787e-13 movmean_h[10270]=-2.147484e-06

答案根本不匹配,顺序不匹配,小数点也不匹配,理论上它们会匹配。

'n' 定义为:

long int n=pow(10,15);

所以我的问题是为什么我的代码是错误的,或者是我遗漏了什么?顺便说一下,我正在为 MATLAB mex 文件编写 C 代码。

最佳答案

代码缺少double round() 的声明声明。较旧的编译器允许这样做,但将结果解释为 int。代码输出然后非常奇怪。对我来说,提示是许多附近的 double 输入具有相同的结果。

// add
#include <math.h>

关于c - 在 MATLAB 和 C 中四舍五入到所需的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39125706/

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