Excel浮点和布尔无法解释的行为


2

谢谢你查看我的问题。

今天我在Excel中闲逛工作,遇到了一些涉及Excel的浮点运算和布尔测试的异常行为。这是我制作的Excel文件测试用例的链接。

为了排除故障并获得更多洞察,我查看了这些页面:源1,源2是Chip Pearson关于Excel浮点精度的帖子,第三个源是Wikipedia关于Excel精度的文章(不能发布2个以上的链接)由于声誉。对不起,我是新来的)。

缺点是单元格A2:A4,A10:A12,I2:I4和I10:I12都具有完全相同的完全相同的顺序,即A2 = I2 = A10 = I10,..., A4 = I4 = A12 = I12。但是,布尔测试用于检查对不同范围内的相同值的算术运算是否不会产生相同的结果。

我认为这是由于浮点精度,但范围中的数字完全相同。因此,任何浮点错误都应该(我认为)在范围内相同地表现出来。

最后,单元格的格式都相同。所以这不应该影响结果。

如果你们都知道造成这种行为的原因,我真的很想听听。这个问题让我傻眼了!

我已经概述了我在下面创建文件所采取的确切步骤(以帮助我的Excel文件不清楚时的可重复性)。

我的问题如下:

  1. 我计算了6600 / 14,4400 / 14,22 / 14,并将结果作为值复制粘贴到单元格A2:A4中。
  2. 我输入了布尔测试的公式到单元格A7:C7。
    2A。A7的'A2 = A3 +
    A4'2b。B7的'A3 = A2 -
    A4'2c。C7有'A4 = A2 - A3'
  3. 我将公式的文本版本(为了便于阅读)键入单元格A6:C6
  4. 我在单元格A8中输入了以下公式:C8
    4a。A8有'A3 +
    A4'4b。B8有'A2 -
    A4'4c。C8有'A2 - A3'
  5. 我将其复制粘贴为值并将结果从A8:C8转换为A10:A12。
  6. 然后,我使用A10:A12中的值重复步骤2-4。
  7. 输入每个单元格A2:A4,A10:A12并复制该值,然后将其粘贴到记事本中。
  8. 我将这些值粘贴到单元格I2:I4,I10:I12中
  9. 对于范围I2:I4和I10:I12,执行步骤2 - 4的布尔测试。


嘿Mokubai,问题不在于我对浮点数的理解。通过大学课程和自己阅读,我已经非常广泛地介绍了这个主题。
帕特里克

很公平,我不知道你的背景,只是觉得它可能是有趣的阅读。在我看到下面的答案之前张贴。
Mokubai

Answers:


1

你不会喜欢这个!不知何故,在复制/粘贴过程中,您抓取了一个换行符并将其粘贴到单元格中A10,这会抛弃所有数学运算。


嘿! 你能告诉我你怎么能在A10中发现这个角色吗?当我将其内容复制并粘贴到记事本和记事本++时,我只看到471.4285714285710。此外,通过选择单元格A10,按F2然后按ENTER更正问题; 进入A11和A12单元并进行相同操作(同时保持A10不变)。
帕特里克

不幸的是,注意形状的微小变化只是我眼中的一招。如果您将纸张重新装入之前的状态,然后在A10中键入数字并在进入或移动单元格之前仔细观察,您会注意到第10行大小的“抽搐”。
Gypsy Spellweaver

嗯,如果你选择单元格,按F2然后按ENTER键,行大小没有任何变化。我找不到关于粘贴作为价值观的具体行为的任何文献,但显然它是罪魁祸首。如果复制并粘贴为值A2到A10,则B15和C15中的布尔语句变为true,但复制和粘贴为值A8到A10需要输入单元格的公式栏并按Enter键以使布尔语句注册正确。然而,将A2和A8复制并粘贴到记事本++中(启用显示换行符)会使用换行符给出相同的数字。
帕特里克

你有什么机会让Notepad ++设置为使用Unix换行符?可能是Notepad ++,Unix感知和Excel之间的翻译问题,无法识别。外卖是在应用程序之间使用复制/粘贴时要小心。我猜?对于它的价值,“错误”也在Linux中的LibreOffice Calc中重现,直接加载下载的文件。
Gypsy Spellweaver 2017年

我将不得不用NP ++来研究这个设置。从现在开始,绝对会复制粘贴,特别是在Excel中。我真的好奇在复制和粘贴时引擎盖下的内容是一个具有等式(如A8)的单元格的内容。非常感谢您查看我的问题,并引导我找到解决方案!我还有一些更多的探索来找出该复制粘贴行为的原因。
Patrick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.