我正在编写一个VSTi插件,我需要计算部分输出包络的系数。
基本上我收到了数学表达式的错误答案,我已将其简化为几个步骤,但仍然不正确。相同的表达式适用于计算器,但不能将其转换为代码。我一直在使用调试器并检查变量的内容,并发现0.25 / 88200的结果为2.8344671201814060e-006,而不是0.00000283446712。代码中较早的类似数学函数如预期的那样。
currentDecCoeff = 0.25 / 88200;
is making currentDecCoeff = 2.8344671201814060e-006 (and not 0.00000283446712)
所有相关变量都是双重类型,我甚至把它作为数值输入(如上所述)而不是变量,它仍然给出了错误的答案。
任何人都可以解释为什么会发生这种情况,并提供一些有关尝试甚至解决方案的想法。
如果需要,我可以在上下文中添加代码。 欢呼声
本
答案 0 :(得分:2)
它们与9位有效数字相同,查找s cientific notation。
详细说明,科学记数法用于通过删除前导或尾随零来轻松显示非常小(或非常大)的数字。通常,它具有以下形式:
y x 10^z
要获得该值,请求和。 C将其显示为:
yEz
因此,2.4x10 ^ 6(或2.4E6)是2400000。
答案 1 :(得分:1)
符号e-006
意味着将我剩下的东西乘以10 ^( - 6)。所以你的结果确实是正确的。