在我的 MS Excel 中,对于不同的数据类型,我有不同的舍入操作行为:
如果是单身:
? Application.Round(6.575!, 2)
6.57
双倍的情况下:
? Application.Round(6.575#, 2)
6.58
有人知道为什么吗?
更新:@paxdiablo给出了一个很好的答案,所以只是在这里很快地复制它:
在单精度中,6.575 在二进制表示中是 0 10000001 101001 0011 0011 0011 0011,或 6.57499980926513671875。这轮到 6.57
在双精度中,添加了更多的 0011,它们的权重足以使数字略大于 6.575(6.57500000000000017763568394003),因此四舍五入为 6.58
无法准确表示它的原因是因为您只能这样做是可以通过在允许的位数内对 2(如 4、2、1/16 等)的幂求和来构造该数字。