当将单元格格式化为具有两位小数的货币时,当增加到 12 位或更多小数位时,值会显示不同。
例子:
美元价值为 268.97 美元。我输入 268.97,其格式为货币,小数点后 2 位,然后我将小数位增加到 13 位,单元格现在显示 268.9699999999990 美元。
为什么会发生这种情况?我只在格式化货币时才会看到这种异常。并且两个值“不”相等。
答案1
当值增加到 12 位或更多小数位时,显示的内容会有所不同
这完全正常。格式化单元格不会改变单元格内容的真实值。
如果您希望货币金额只保留两位小数,请使用 Round 函数将其四舍五入为两位小数。
完成后保存您的工作。
请记住,电子表格使用完整的数字容量,因此四舍五入后您可能会看到 xx99999999 或 xx00000001 。对此无能为力。
根据需要进行四舍五入,并将单元格格式化为 2 位数字,然后继续。
答案2
您的问题的真正答案隐藏在计算机中用于表示数字的技术‘内部’。
该问题类似于 的结果one divided by three
无法用小数部分写在纸上,即0.3333333<append '3' any _finite_ number of times>
只能大约等于1/3
。
计算机内部1/10
等1/100
也存在同样的问题;它不能以完全相同的方式表示(使用二进制,有零和一)。
因此,问题出在 Excel 和大多数其他计算机软件包中使用的“浮点”数上。
您所看到的正是其副作用。
参考:
https://en.wikipedia.org/wiki/Floating-point_arithmetic
您可能会找到大量有关计算机中数字表示创建的文献。此知识领域包括“离散数学”中的长篇文本。
Excel 使用双精度浮点数,其限制接近“16 位数字”,例如,输入一系列小数,如,0.1234567890123456...
您会看到最后几位被丢弃。不过这里有一些技巧,您可以在参考链接下阅读这些技巧。