使用Microsoft Access 2010,我有两个单个字段:
A = 1.1 B = 2.1
我创建了一个查询,其中我定义了C = A * B
Microsoft Access表示C = 2.30999994277954 但实际上,C = 2.31
如何获得正确的结果(2.31)?
答案 0 :(得分:2)
如果您的数字字段大小是单个或两个而不是十进制,则可能会发生对十进制值执行的操作的略微关闭结果。单个和双(或浮点)数字是“真实”数字的非常接近的近似值,但如果需要精确的操作,则不应该依赖它们。相关的stackoverflow问题提供了有关此问题的更多信息:Access comparing floating-point numbers "incorrectly"
如果可以修改基础表的设计,则应将“A”和“B”字段的字段大小属性从单个更改为十进制。更改字段大小后,在保存表之前,还需要将“A”和“B”的“缩放”属性从0调整到您可能需要的小数点右侧的任意位数。您可能仍会注意到丢失数据,但如果在保存表之前正确调整字段属性,这应该不是问题。在执行此操作之前,您可能应该复制表,以便验证没有数据丢失。保存表格并验证更改后不会导致数据丢失,您的查询应准确表示A * B.