LEN在EXCEL中返回的奇数值

时间:2018-09-18 21:49:14

标签: excel function precision

例如,考虑某些单元格内的以下函数字符串:

A1 = B1 - INT(B1)

A2 = LEN(A1)

A2将返回 17 ,而与A1中该函数返回的值(并因此保留)无关。我怀疑这与INT(B1)返回的精度有关,但是我对Excel的内部机制知之甚少。

最终目标是获取B1中保留的数字的小数部分的长度。例如,如果B1 = 978.01194 ,则A2将保持 5 LEN(01194))。显然,这需要减去2才能消除上述实现中前导(0.)的计数,但这假设我可以使用此方法获得正确的结果。其他方法的任何帮助或指导将不胜感激!

编辑:

我意识到只有当我减去两个量时,才会出现适当精度的损失。 INT(B1)返回正确的精度,使用其长度,我可以通过减去原始数来获得小数。 仍然想知道是什么原因导致 A1 内部精度下降 { {1}}。

2 个答案:

答案 0 :(得分:1)

替代方法是使用非计算得出的数字:

 = LEN(B1) - LEN( INT(B1) ) - 1

或将数字四舍五入到小于15.95 significant digits的地方:

 = LEN( ROUND( B1 - INT(B1), 16 - LEN(INT(B1)) ) ) - 2

 = LEN(TEXT(B1,"0.##############")) - LEN(INT(B1)) - 1

答案 1 :(得分:1)

另一种替代方法是FIND,其中出现小数,并将其用作偏移量,例如

= LEN(B1)-FIND(".",B1)

通常,当您真正感兴趣的是出于这个确切原因而代表数字的 text 时,对数字执行数学运算是不明智的。浮点数在处理精确度方面不是很可靠,因此在这种情况下,您要在小数点后加上多余的尾数。