我有一个表tblTimeInLieu
,其字段HoursTaken
包含以下值:1; 0.5; 2.25; 0.66
然后我有一个表单frmTimeInLieu
,记录来源:TimeInLieu,其中包含一个文本框txtHoursUsed
,控件来源:Sum([HoursTaken])
,它返回此值:4.41000003。
...
HOW!?
我通过用FormatNumber(Sum([HoursTaken]), 2)
替换控制源来帮助它,以便它现在看起来正确,但我不能为我的生活找出正在发生的事情。
潜在的相关信息:
HoursTaken
字段包含类型single
的数据,其中“小数位数”设置为“自动”。我在Table的Before Change事件中添加了一个数据宏,看起来像这样,但是没有改变。这是一个很长的镜头:
SetField
Name HoursTaken
Value = FormatNumber([HoursTaken], 2)
答案 0 :(得分:1)
Floating point number inaccuracy!
由于您的列是 Single ,这是Access具有的最小浮点数数据类型,因此多次涉及此列的大多数操作都会产生不准确的结果。
将列类型更改为十进制,货币,或使用舍入功能放弃舍入数据。
如果您要将列更改为 Double ,结果仍然不准确,但错误较小。