问题是您对访问中的十进制类型以及访问中可用的单双类型浮点值的问题感到困惑。
如果您在访问中使用货币数据类型,这是一个缩放整数,并且不会产生舍入(这是我们大多数人用于财务计算和报告的)。您还可以在访问中使用十进制值,并且它们根本不会四舍五入,因为它们是压缩小数。
但是,在 access 中可用的 single 和 double 值实际上是相同的格式,并且符合 IEEE 浮点标准。
对于访问单个变量,这是一个 32 位的数字,范围是:
-3.402823E38
to
-1.401298E-45 for negative values
和
1.401298E-45
to
3.402823E38 for positive values
在我看来,这与 IEEE 754 标准相同。
因此,如果您将 access 中的值作为一个单独的值相加,您应该得到相同的结果。
因此,我相信基于 Intel 的 Access single 和 doubles 与此 IEEE 标准相同。
它和这里唯一真正的问题是您要访问的原始数据的格式是什么,以及当这些数据被拉入和存储时正在发生什么样的文本或字符串或转换过程?
Access 可以转换数字。尝试在访问命令行提示符(调试窗口)中键入这些值
? hex(255)
Above will show FF
? csng(&hFF)
Above will show 255
编辑:
啊,好吧,我现在明白了,我把这个颠倒过来了,我的错在这里。这里的问题是假设您将数字转换为较旧的 IBM 格式(超过 64 位?),那么您将不得不掌握他们用于添加这些数字的代码。事实上,即使在那个时候,不同的 IBM 模型取决于您购买的产品实际上会产生不同的结果(更多的钱 = 更高的精度)。
因此,您不仅需要转换例程来转换为内部表示,然后您还需要加/减/乘这些数字的例程。因此,仅拥有转换例程不会让您走得太远,因为您还必须复制它们进行数学运算的确切例程。就它们如何舍入数字等而言,这些类型的例程可能并不完全相同。