나는이 질문에 너무 흥미를 느껴 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 converted = quad.doubleValue();
코드는 kerbaya.com/ieee754lib에 있습니다.
['BigDecimal'] (http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html)이 도움이 될 수 있습니다. – crush
숫자를 어떻게 가져 오시겠습니까? 원래 숫자의 문자열 표현을 파싱하는 것이 귀하의 의도입니까? –
@RobertHarvey 나는 그가 64 비트와 64 비트를 2 배로 전달했다고 가정하고, 몇 가지 논리를 사용하여 다시 합치는 것으로 가정한다. 이것은 오랜 시간을 다룰 때 나에게 의미가 있지만, 복식 비트가 아직 조직되어있는 방법을 실제로 이해하지 못하기 때문에 잘못되었을 수도 있습니다. 어쩌면 복식으로는 불가능합니다. – crush