这是一个经典问题,但我需要帮助来确定我所缺少的。
问题:在 MATLAB 中
(exp(1) + 10^12) - 10^12
给你一个等于 e 的双精度数,最多 5 个正确数字。但我以为是4。
一个有 exp(1) + 10^12 = 1.000000000002718e+12,其中 1.000000000002718 包含 16 位数字,即我们正在使用的精度。e 剩下的只有 2.718,但是 (exp(1) + 10^12) - 10^12 = 2.7182(我遗漏了最后一个小数点 2 之后的数字),这意味着我还保存了一个数字。
问题:多余的数字存储在哪里或如何存储?我知道无符号 64 位 IEEE 的最后 53 位用于舍入,这与我的问题有关吗?