我和我的妻子在每个月初用电子表格来计算我们的财务状况,而这个月的单元格中出现了一个奇怪的数字F9
。
单元格中的公式F9
是="+ £"&-'Sue''s Outgoings'!C13&" Shortfall"
应该输出+ £57.35 Shortfall
但它输出+ £57.3500000000001 Shortfall
。
为了尝试解决这个问题,我输入=-'Sue''s Outgoings'!C13
了一个单元格F13
,它输出的正是'Sue''s Outgoings'!C13
57.35。(见下面的第二张图)
工作表中的所有单元格Sue's Outgoings
都已格式化为Currency
format,我临时重新格式化了所有单元格以General
查看其中是否隐藏了奇怪的数字,但什么也没有。Sue's Outgoings
工作表中的所有数字都是直线数字,而不是公式的结果。
还有什么其他原因导致在结果中错误地添加了 0.0000000000001?
答案1
Excel 使用浮点数学,这意味着有时您的值中会隐藏这样的数字。(https://docs.microsoft.com/en-US/office/troubleshoot/excel/floating-point-arithmetic-inaccurate-result)
这些通常显示正确,但是当您将它们转换为文本时,它们确实可能会导致问题,一种解决方法是在公式中使用 ROUND:
="+ £"& ROUND(-'Sue''s Outgoings'!C13,2) &" Shortfall"
答案2
要添加修复程序而不是解决问题的方法,请按照由@MátéJuhász 链接的 Microsoft Docs 页面:
如果您正在处理纯粹基于金钱的电子表格,如这里,或任何其他固定小数位数的电子表格,则可以将工作表设置为“显示的精度”。
方法 2:显示的精度
在某些情况下,你可以使用显示的精度选项。此选项强制将工作表中每个数字的值设置为显示值。要启用此选项,请按照以下步骤操作。
- 在文件菜单,点击选项,然后点击先进的类别。
- 在里面计算此工作簿时部分,选择所需的工作簿,然后选择设置显示的精度复选框。
例如,如果您选择显示两位小数的数字格式,然后打开显示的精度选项,保存工作簿时,超出小数点后两位的所有精度都会丢失。此选项会影响活动工作簿(包括所有工作表)。您无法撤消此选项并恢复丢失的数据。我们建议您在启用此选项之前保存工作簿。
那么就不必担心需要解决浮点数学错误了ROUND()
。
答案3
您要求 Excel 在文本字符串中间显示一个数字,但没有告诉它使用什么格式,或者以任何其他方式提示它意识到您可能希望它找出如何最好地显示这个数字。
这里可以选择四舍五入,但一般来说,我认为最好直接告诉 Excel 您希望这个数字如何出现在文本中间(这里我使用了简单的两位小数格式:
="+ £"& TEXT(-'Sue''s Outgoings'!C13,"#.00") &" Shortfall"
或者,您可以通过提取数字并使用如下自定义数字格式来完成整个操作(请注意,它将正数和负数都显示为正数,并使用不同的标签):
+ £#,###.00 "excess";+ £#,###.00 "shortfall";0.00 "balanced";@