以txtbox形式计算金额计算总和(table.field)

时间:2018-06-15 06:46:39

标签: ms-access

我有一个表tblTimeInLieu,其字段HoursTaken包含以下值:1; 0.5; 2.25; 0.66

然后我有一个表单frmTimeInLieu,记录来源:TimeInLieu,其中包含一个文本框txtHoursUsed,控件来源:Sum([HoursTaken]),它返回此值:4.41000003。

...

HOW!?

我通过用FormatNumber(Sum([HoursTaken]), 2)替换控制源来帮助它,以便它现在看起来正确,但我不能为我的生活找出正在发生的事情。

潜在的相关信息:

  • 添加最后一个值时发生了变化。在此之前它很好,总是在小数点后不超过2位数。
  • HoursTaken字段包含类型single的数据,其中“小数位数”设置为“自动”。
  • 我在Table的Before Change事件中添加了一个数据宏,看起来像这样,但是没有改变。这是一个很长的镜头:

    SetField
        Name HoursTaken
        Value = FormatNumber([HoursTaken], 2)
    

1 个答案:

答案 0 :(得分:1)

Floating point number inaccuracy

由于您的列是 Single ,这是Access具有的最小浮点数数据类型,因此多次涉及此列的大多数操作都会产生不准确的结果。

将列类型更改为十进制货币,或使用舍入功能放弃舍入数据。

如果您要将列更改为 Double ,结果仍然不准确,但错误较小。