java - Java 中的 x86 80 位浮点类型

标签 java floating-point precision x86-emulation

我想在 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/

相关文章:

java - 用于防止在 GUI 线程上进行调用的 Android 方法注释

c++ - 变量分组在优化代码中提供不同的答案

c++ - 为什么字符串到 float 的转换可能不起作用?

c++ - 将范围拆分为统一的间隔

C# double to decimal 精度损失

java - 通过java发送短信

java - 以编程方式获取字体轮廓

java - 应用程序在 ios 中启动和关闭以实现 appium 自动化

python - 如何从 Python 中字符串的前 8 个字节计算 double float ?

r - R中which.max函数的容差是多少?