Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EXCEL中LEN返回的奇数值_Excel_Function_Precision - Fatal编程技术网

EXCEL中LEN返回的奇数值

EXCEL中LEN返回的奇数值,excel,function,precision,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.)的计数,但这是假设我可以用这种方法得到正确的结果。任何其他方法的帮助或指导将不胜感激 编辑:我意识

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

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
中的操作在内部对
LEN
失去精度

备选方案是使用非计算结果的数字:

 = LEN(B1) - LEN( INT(B1) ) - 1
或将数字四舍五入至小于:


备选方案是使用非计算结果的数字:

 = LEN(B1) - LEN( INT(B1) ) - 1
或将数字四舍五入至小于:


另一种方法是
查找
小数点所在的位置,并将其用作偏移量,例如

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

一般来说,当你真正感兴趣的是代表数字的文本时,对数字进行数学运算是不明智的。浮点对于处理精确性不是很可靠,这就是为什么在这种情况下,小数点后会出现额外的尾随数字。

另一种选择是
查找小数点所在的位置,并将其用作偏移量,例如

= LEN(B1)-FIND(".",B1)
一般来说,当你真正感兴趣的是代表数字的文本时,对数字进行数学运算是不明智的。浮点数在处理精确性方面不是很可靠,这就是为什么在本例中,小数点后会出现额外的尾随数字