You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

音乐音高分值计算中对数运算的浮点数精度问题咨询

音分计算偏差问题解答

核心结论

你观测到的偏差完全不是浮点数精度导致的,是你混淆了「纯律音程的理论音分值」和「十二平均律的标称音分值」的固有差异,你的代码计算结果是完全准确的。

具体原因分析

  • 十二平均律的定义是将1个八度(频率比2:1)等分为12个半音,每个半音对应100音分,因此:
    • 平均律纯五度占7个半音,标称值为700音分,对应频率比为2^(7/12) ≈ 1.4983,而非你测试用的3/2=1.5
    • 平均律大三度占4个半音,标称值为400音分,对应频率比为2^(4/12) ≈ 1.2599,而非你测试用的5/4=1.25
  • 你测试用的3:2、5:4都是纯律的音程频率比,纯律追求音程的整数频率比和谐性,和十二平均律的音分值本就存在固有差:
    • 纯律纯五度的理论音分值为1200 * log2(3/2) ≈ 701.96,天然比平均律纯五度高约2音分,和你计算结果完全一致
    • 纯律大三度的理论音分值为1200 * log2(5/4) ≈ 386.31,天然比平均律大三度低约14音分,和你的计算结果完全匹配

浮点数精度的实际影响

你当前用的双精度浮点数计算log2的误差在1e-15量级,折算到音分最多是1e-12音分,完全不可能造成可感知的、甚至1音分级别的偏差。

验证方法

你可以用平均律对应的频率做测试:输入平均律纯五度频率440 * 2**(7/12)和440计算,得到的结果会无限接近700,误差可以忽略。

内容的提问来源于stack exchange,提问作者Chris A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:06:04