我在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
,则错误消失...
我在这里做错了什么?