为什么 Excel 在给定精度之前舍入?

问题描述 投票:0回答:3

为什么 Excel 对 C 列舍入小数点后 15 位,对 D 列舍入小数点后 1 位?查看第三个表,以便您可以看到计算器值。

A(标准) B(标准) C(数字;30 位小数;公式:A/B) D(数字;30 位小数;公式:C*B)
897,8 1046,15 0,858194331596807000000000000000 897,800000000000000000000000000000

如果我将 C 列和 D 列设置为标准,则会出现神奇的自动舍入(这是如何工作的?):

A(标准) B(标准) C(标准;公式:A/B) D(标准;公式:C*B)
897,8 1046,15 0,858194332(四舍五入至小数点后 9 位) 897,8(四舍五入至小数点后一位)

计算器检查:

A B C D
897,8 1046,15 0,858194331596807000000000000000(取自表1) 897,79999999999964305
897,8 1046,15 0,858194332(取自表2) 897,8000004218
897,8 1046,15 0,85819433159680734120346030683936(A/B 的正确商) 897,8
excel
3个回答
0
投票

我找不到任何关于

General
格式在 Excel 中如何工作的官方文档,所以我自己做了一个快速测试:

  • 最多显示10位数字(小数分隔符前后的位数之和)
  • 根据列宽,显示的位数可能会较少,以确保数字适合可用空间
  • 前导尾随
    0
    不显示

问题中的具体例子:

  • 0.858194332
    - 最多显示 10 位数字(
    0
    + 9 位小数)
  • 897.79999999999964305
    - 四舍五入到 10 位数字为
    897.8000000
    ,删除尾随的
    0
    即可得到
    897.8
    ,并显示出来。

0
投票

这是Excel规范和限制这里

按照这个

计算规格和限制

特点 最大限制
数字精度 15位数字
允许的最小负数 -2.2251E-308
允许的最小正数 2.2251E-308
允许的最大正数 9.99999999999999E+307
最大允许负数 -9.99999999999999E+307
通过公式计算允许的最大正数 1.7976931348623158e+308
通过公式计算允许的最大负数 -1.7976931348623158e+308

General
数字格式保持原样。


0
投票

Excel 的计算精度保证高达 15 位有效数字,但实际上它的舍入精度仍然很小。但它通常不会显示这些额外的数字(除非我们计划特殊计算)。

General
格式中,如果单元格宽度允许,最多可写入 11 位小数(包括小数点,不包括减号)。但内存中的数字精度更高,因此计算结果以 15 位的完整精度呈现。
如果你这样写计算:
=1000*897,8/1046,15-858

这是您将得到的结果:
0,194331596807274

也就是说,额外 3 位小数(不一定精确)。
如果您现在执行反向计算:
0,194331596807274*1046,15 = 203,29999999993

858*1046,15 = 897596,7

总计(不再在 Excel 中)
= 897799,99999999993

您可以看到小数点后第 16 位是 9,因此正确四舍五入到 15 位。

© www.soinside.com 2019 - 2024. All rights reserved.