简单的C++数学给出不正确的结果

Simple C++ maths giving incorrect result

本文关键字:不正确 结果 C++ 简单      更新时间:2023-10-16

我正在编写一个 VSTi 插件,我需要为部分输出包络计算系数。

基本上我收到了数学表达式的错误答案,我将其简化为几个步骤,但它仍然不正确。相同的表达式适用于计算器,但无法转换为代码。我一直在使用调试器并检查变量的内容,发现 0.25/88200 给出的结果是 2.8344671201814060e-006,而不是 0.00000283446712。代码前面的类似数学运算按预期运行。

currentDecCoeff = 0.25 / 88200;
is making currentDecCoeff = 2.8344671201814060e-006 (and not 0.00000283446712)

所有相关变量都是双重类型,我什至将其输入为数值(如上所述)而不是变量,但它仍然给出了错误的答案。

任何人都可以阐明为什么会发生这种情况,并就尝试甚至解决方案提供一些想法。

如果需要,我可以在上下文中添加代码。干杯

它们与 9 个有效数字相同,查找科学记数法。

详细地说,科学记数法用于通过删除前导或尾随零来轻松显示非常小(或非常大)的数字。通常,它具有以下形式:

y x 10^z

若要获取值,请求解总和。C 将其显示为:

yEz

因此,2.4x10^6(或 2.4E6)是 2400000。

表示法e-006的意思是将我剩下的东西乘以 10^(-6)。所以你的结果确实是正确的。