Safari中的计算错误?多次重复相同的计算会改变其结果

时间:2016-05-28 21:52:11

标签: javascript math safari

我在Safari中观察到奇怪的行为:

我有一个应该从频率计算midi音符的功能。当我这样做几次时,这种方法很好,但是当我进行相同的计算几次时,结果最终会出错。

这是一个例子:https://jsfiddle.net/38tzLsjL/ (可能需要多次运行该示例,直到发生错误)

功能如下:

var calcMidiNoteFromFrequency = function (frequency) {
    var notRoundedMidi = 12 * (Math.log(frequency / 440) / Math.log(2));
    var roundedMidi = Math.round(notRoundedMidi) + 69;

    return {notRoundedMidi:notRoundedMidi, roundedMidi:roundedMidi};
}

当我使用相同的参数调用此函数几千次时,它会更改其结果。 notRoundedMidi将保持正确,但roundedMidi会更改为错误的值。 如果我删除+ 69,则错误消失...

我在这里做错了什么?

0 个答案:

没有答案