计算vb.net中的对数 - 冲突的结果

时间:2016-06-20 16:55:26

标签: vb.net excel math

我在vb.net中做了一些计算,这是我的等式:

rms = (20 * (Math.Log(rms / 0.7746))) 'also tried (Math.Log10(rms / 0.7746))

我尝试过各种不同的编写方法,包括将计算分成不同的步骤。然而,最终结果相当远。

我尝试将变量'rms'声明为十进制和双精度。它确实包含小数位。

在Excel中,我尝试使用以下公式进行相同的计算:

=20*(LOG(C2/0.7746)) ' where C2 is the RMS value

结果与我以前检查的网站以及我的袖珍计算器一致。

我也尝试将数字四舍五入到小数点后3位:

rms = Math.Round(rms, 3)

这对最终结果的影响也很小。

我只能假设它是VB中的'运算符优先级',但我正在努力解决这个问题。

任何帮助都一如既往地非常感谢,谢谢。

1 个答案:

答案 0 :(得分:1)

在马拉松调试会话之后,我在代码中发现了一个错误。

我有一个例程,它使用给定频率的电压来“#34;标准化"我做的所有图都是0dBu。

我的规范化程序被打破了。不好。

最后 - 为了从日志数学中获得正确的输出,我不得不改变执行计算的顺序。

原来是rms = (Math.Log10(rms / 0.7746) * 20)

在尝试查找问题时,我将其更改为rms = (20 * (Math.Log(rms / 0.7746)))

会产生不同(且不正确)的结果。

无论如何 - 它现在已经修好了。

感谢所有回复的人。