9E307与超精度计算_Excel公式教程
(2016-01-15 22:22:34)
标签:
excel公式教程数字精度 |
分类: Excel公式教程-原理篇 |
在Excel中,为什么用9E307代表最大的数字值?如何对超出15位精度的数字进行计算?
在单元格中,可以输入的最大数字值是9.99999999999999E307,如果输入9E308,那只能保存成文本值。
上述这种数字形式,叫做科学记数,其中的E必须大写。例如52E4相当于52*10^4,也即是520000。
通常把最大的数字值简写成9E307。
很多情况下,使用9^9(相当于387420489)代表最大的数字值,也许已经足够了。
Excel的数字值只能精确到15位有效数字。例如输入一个18位的数字123456789012345678,Excel只能保存为123456789012345000。末尾超出精度的数位直接变成0,并不进行四舍五入。
如果你的数字需要保留很高的精度,可以保存为数字型文本(或者叫做文本型数字)。
下面介绍把两个18位精度的文本型数字相加的方法。
假设在单元格A1输入“'123456780912345678”,在单元格A2输入“'222111444555666777”。字符串前头的撇号是一个文本前导符,它使你输入到单元格的所有内容都作为文本值保存。
如何把这两个18位的文本型数字相加呢?
解题思路是:首先,把每个数字拆分为前后两段各9位的数字,分别进行相加;然后,把相加后的两段计算结果再合并为一个文本型数字。
用下面的公式可以把数字的前9位数相加,该公式返回数字值345568224:
=LEFT(A1,9)+LEFT(A2,9)
再用以下公式把两个数字的后9位数相加,该公式返回数字值1468012455:
=RIGHT(A1,9)+RIGHT(A2,9)
后9位数相加的结果,可能是10位的数字(譬如现在的情况),也可能少于9位数(前头的0被省掉)。
因此,在把两段计算结果合并之前,需要做以下两步技术处理:
第一步,如果后段计算结果有进位,就把进位加到前段计算结果里。我们把前段计算公式修正如下:
=LEFT(A1,9)+LEFT(A2,9)+(RIGHT(A1,9)+RIGHT(A2,9)>=1E9)
现在前段计算结果变为数字值345568225,已经加上需要进位的1了。
第二步,确保后段计算结果为9位数字。我们把后段计算公式修正如下:
=RIGHT(TEXT(RIGHT(A1,9)+RIGHT(A2,9),REPT(0,9)),9)
现在后段计算结果变为文本值"468012455",前头的1被截掉了。
最后,把修正后的两段计算公式用文本运算符(&)串起来就可以了,完整的公式如下:
=LEFT(A1,9)+LEFT(A2,9)+(RIGHT(A1,9)+RIGHT(A2,9)>=1E9)&RIGHT(TEXT(RIGHT(A1,9)+RIGHT(A2,
9),REPT(0,9)),9)
该公式返回一个18位的数字型文本"345568225468012455"。