例如,考虑某些单元格内的以下函数字符串:
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}}。
答案 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 时,对数字执行数学运算是不明智的。浮点数在处理精确度方面不是很可靠,因此在这种情况下,您要在小数点后加上多余的尾数。