【发布时间】:2014-01-03 02:17:50
【问题描述】:
八度音阶
> mod(10^15 + 1, 2)
ans = 1
如预期的那样,但是
> mod(10^16 + 1, 2)
ans = 0
对于更大的数字也是如此。
我假设如果数字太大,第一个操作数将被评估为Inf,结果将给出NaN。为什么这里发生了不同的事情? mod 的 Octave 函数参考没有提及任何内容。
【问题讨论】:
八度音阶
> mod(10^15 + 1, 2)
ans = 1
如预期的那样,但是
> mod(10^16 + 1, 2)
ans = 0
对于更大的数字也是如此。
我假设如果数字太大,第一个操作数将被评估为Inf,结果将给出NaN。为什么这里发生了不同的事情? mod 的 Octave 函数参考没有提及任何内容。
【问题讨论】:
10^16 + 1 恰好计算为 10^16,因为 +1 对于正在使用的 64 位浮点表示来说太小了。这是一个舍入错误的情况。
因为即使是 10^16,您实际上也可以从 mod 获得正确的结果。
【讨论】: