将货币格式化为两位小数

将货币格式化为两位小数

当将单元格格式化为具有两位小数的货币时,当增加到 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/101/100也存在同样的问题;它不能以完全相同的方式表示(使用二进制,有零和一)

因此,问题出在 Excel 和大多数其他计算机软件包中使用的“浮点”数上。

您所看到的正是其副作用。

参考:
https://en.wikipedia.org/wiki/Floating-point_arithmetic
您可能会找到大量有关计算机中数字表示创建的文献。此知识领域包括“离散数学”中的长篇文本。

Excel 使用双精度浮点数,其限制接近“16 位数字”,例如,输入一系列小数,如,0.1234567890123456...您会看到最后几位被丢弃。不过这里有一些技巧,您可以在参考链接下阅读这些技巧。

相关内容