[英]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.