我想在 Java 中模拟 x86 扩展精度类型并执行算术运算和转换为其他类型。
我可以尝试使用 BigDecimal 来实现它,但是涵盖所有围绕 NaN、无穷大和强制转换的特殊情况可能是一项乏味的任务。我知道一些库提供的其他浮点类型的精度高于 double ,但我希望具有与 x86 80 位浮点相同的精度。
有没有提供这种浮点类型的Java库?如果没有,您能否提供其他提示,以比提出自定义 BigDecimal 解决方案更轻松地实现此类数据类型?
最佳答案
如果您知道您的 Java 代码实际上将在 x86 处理器上运行,请在汇编(或 C,如果 C 编译器支持的话)中实现 80 位算法并使用 JNI 调用。
如果您的目标是特定的非 x86 平台,请查看 qemu 代码。应该有一些方法可以只删除执行 80 位浮点运算的部分。 (编辑:qemu 的实现是 SoftFloat 。)。用 JNI 调用它。
如果您真的想要跨平台的纯 Java 80 位算法,您可能仍然可以将它与开源 CPU 模拟器中的 C 实现进行比较,以确保您解决了正确的极端情况。
关于java - Java 中的 x86 80 位浮点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33419039/