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

时间:2013-01-27 18:45:25

标签: c++ math expression vst

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

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

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

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

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

如果需要,我可以在上下文中添加代码。 欢呼声

2 个答案:

答案 0 :(得分:2)

它们与9位有效数字相同,查找s cientific notation

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

y x 10^z

要获得该值,请求和。 C将其显示为:

yEz

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

答案 1 :(得分:1)

符号e-006意味着将我剩下的东西乘以10 ^( - 6)。所以你的结果确实是正确的。