Microsoft Access自动增加十进制

时间:2017-06-19 20:38:20

标签: ms-access

Hi My Fellow Access用户。 我通过链接两个Excel工作表使用Access进行协调。数字是两位小数。 Linked Table view

然而,当我试图在两个小数两个小数之间运行减法时,它会返回如下结果: enter image description here

感谢是否有人知道如何发生这种情况,以及我需要采取哪些措施来解决这个问题?

由于 田

2 个答案:

答案 0 :(得分:1)

对于链接的Excel工作表,列类型可能是Double,64位浮点数。您遇到的这个问题可能是由于浮点数的固有限制,并不是Excel或Access所独有的。

这个Stack Overflow问题基本上是同一个问题:Why does this subtraction not equal zero?

Excel也不例外,只是默认格式可能不会显示必要的精度来揭示行为。选择科学格式或增加显示的小数位数将显示相同的行为。

请考虑以下事项:

  1. 对于货币金额,请使用CCur()函数将值转换为货币。货币是固定小数值,但请注意,它只有小数点右边的4位数。 (更新以反映古斯塔夫的建议)
  2. 在执行数学运算之前,使用CDec()函数将值转换为定点十进制类型。没有本机VBA Decimal类型,因此这些是包含Decimal值的变体。但转换回浮点后,仍有可能体验到额外的数字。
  3. 使用Round()函数舍入结果,但不能保证不会消除浮点限制。
  4. 选择显示数字的显式格式。

答案 1 :(得分:1)

不要直接使用链接的Excel数据。

创建简单的选择查询,您可以在其中转换和修剪数据。像:

Select SomeField, Description, CCur([TotalAmount]) As Total
From YourLinkedExcelTable

处理金额时,请始终使用货币作为数据类型。

现在,使用查询计算 Diff