Java存储Double in Integer []

时间:2015-11-16 12:50:20

标签: java

我想在整数数组中存储一个Double,并且能够再次读取Double,例如:

int[2] doubleToIntArr(double)

double intArrToDouble(int[2])

如何实现这一目标?

3 个答案:

答案 0 :(得分:6)

以这种方式:

  1. 使用Double.doubleToLongBits(double)double变为long

  2. 使用移位和屏蔽来提取long的高低部分,并将其存储在int[](或Integer[])中。

  3. (还有其他方法可以实现这一点,但是如果你关注性能,这可能是在纯Java中实现它的最有效方法。)

    请注意,此转换在计算上没有用处。除了将int值转换为double之外,很难对这些belongs_to值进行任何具有计算意义的事情。

答案 1 :(得分:4)

  double d = 100;
  long l = Double.doubleToLongBits(d);
  int i1 = (int)(l >> 32);
  int i2 = (int)l;

  double d2 = Double.longBitsToDouble(((long)i1 << 32) | (i2&0xFFFFFFFFL));
  System.out.println(d2);

答案 2 :(得分:2)

java.nio.ByteBuffer类具有允许您从字节数组读取和写入标准数据类型的方法。

你应该可以用它来写Double,然后读出两个ints,例如

ByteBuffer buf = ByteBuffer.allocate(8);
buf.putDouble(d);
int i1 = buf.getInt(0);
int i2 = buf.getInt(4);