[英]Handling a quadruple precision floating point (128-bit) number in java
我需要使用来自另一个系统的数字,这些数字是 java 中的 128 位(四倍精度)浮点数。
考虑到java中没有等效类型,我想使用java代码降低数字的精度,以便它们可以存储在java double中。 这可以用 c 或使用汇编很容易地完成,但我想纯粹用 java 来完成。
可以公平地假设四倍精度数存储在 java 中的 128 位字节数组中。
有没有好的解决方案,只使用java? 谢谢。
我对这个问题很感兴趣,以至于我不得不编写一个库来处理 IEEE-754 浮点数。 使用库,您可以使用以下内容:
byte[] quadBytes; // your quad-floating point number in 16 bytes
IEEE754 quad = IEEE754.decode(IEEE754Format.QUADRUPLE,
BitUtils.wrapSource(quadBytes));
// IEEE754 holds the number in a 'lossless' format
从那里,您可以:
ByteBuffer doubleBuffer = ByteBuffer.allocateDirect(8);
quad.toBits(IEEE754Format.DOUBLE, BitUtils.wrapSink(doubleBuffer));
doubleBuffer.rewind();
double converted = doubleBuffer.asDoubleBuffer().get();
但上面的代码片段只是为了说明一般用法……为 double 提供了一个速记:
double converted = quad.doubleValue();
根据从导入的String
表示实例化的数据集的大小, BigDecimal
可能是一个简单而准确的选项。 我假设可以从任何编程语言导出这些数字的字符串表示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.