ms-access - 在 VBA 中模拟 IBM 浮点乘法/加法

标签 ms-access vba floating-point ieee-754

我正在尝试在 Access 2003 或 Access 2010 环境中模拟(不再存在)大型机报告生成器。它生成的数据必须与 70 年代初的纸质报告完全匹配。不幸的是,最早几年的数据是在使用 IBM 浮点表示而不是 IEEE 的硬件上运行的。在 Google 的帮助下,我找到了一个 VBA 函数库,可以将浮点数从十进制转换为 IEEE 754 32 位二进制格式。我不得不修改库以接受 32 位或 64 位浮点数,所以我对浮点格式有一定的了解,但是,我在从 IEEE 到 IBM 二进制格式的转换以及乘法和加法方面遇到了麻烦IBM 或 IEEE 编号。

我还没有打开任何其他库来在 VBA 中执行这种转换和算术运算 - 有没有更简单的方法来解决这个问题,或者我没有找到一个现有的库?如果没有,对相关算法的清晰而直接的解释?

提前致谢。

最佳答案

老实说,您最好先查看 Hercules 模拟器。
http://www.hercules-390.org/除了理论上的 VBA 之外,您可以使用 Decimal 类型来获得良好的结果(请注意,您必须使用 CDec 来创建这些结果)它使用 12 位,具有 10 个标量的可变幂。

快速谷歌显示 this post来自大力神小组,这证实了 Alberts 关于需要了解硬件的观点:

---剪辑--

在理论上,但在实践中则不然。 S/360 和 S/370 有一个
科学或商业指令集的选择。前者补充说
FP 指令和寄存器到基址;后者是小数
说明,包括编辑和编辑和标记。但更大的 360 (iirc/65
及以上)和 370(/155 及以上)模型具有两者的结合,称为
通用指令集,在某些时候 S/370 放弃了
选项。

---剪断---

我不得不说,在查看了 Hercules 源代码后,您可能需要准确地弄清楚正在执行哪些浮点运算代码(就精度单、长、扩展而言)。

关于ms-access - 在 VBA 中模拟 IBM 浮点乘法/加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3999946/

相关文章:

vba - 识别逗号分隔字符串的新添加内容

algorithm - 当除数尾数全为零时的浮点算法 - 例如在 2.0 的情况下 - IEEE -754

Java double 求和麻烦

java - 删除重复项方法不会删除重复项

excel - VBA,修剪路径的一部分

excel - Excel 中的自定义舍入函数

awk - awk 中的浮点计算

vba - 将完整的 ADO 记录集插入现有的 ACCESS 表而不使用循环

ms-access - Access 中连续形式的组合框的自定义行源

ms-access - 如何锁定 Access 子表单中的记录