【问题标题】:How to get a floating-point number from its binary representation in Java? [duplicate]如何从 Java 中的二进制表示中获取浮点数? [复制]
【发布时间】:2015-05-01 18:12:51
【问题描述】:

我想创建一个浮点数的二进制表示,并能够在需要时解析该数字。 “二进制表示”不是指“0.00101”,而是类似“101000101”的意思,也就是说,01 的序列,没有小数点分隔符。我需要一种方法来在String 中为double 创建这样的表示并解析doubleString。 请不要提及 X Y 问题,因为我确实需要这种方法(类似于“无符号二进制值”)。

提前谢谢你。

Convert Double to Binary representation? 似乎解决了将double 解析为String 的问题,但我仍然需要帮助来做相反的事情:从二进制到double

【问题讨论】:

  • 到目前为止你有没有尝试过?
  • 当然我可以创建自己的存储双精度的方式,但我需要规范的方式

标签: java binary floating-point


【解决方案1】:

要将double 的位转换为String,可以使用Double.doubleToLongBits,它创建一个与double 具有相同位的long,然后是Long.toBinaryString 将其转换为一个String,位为字符。

double test = 0.5;
long doubleBits = Double.doubleToLongBits(test);
String doubleBitsStr = Long.toBinaryString(doubleBits);
System.out.println(doubleBitsStr);

输出:11111111100000000000000000000000000000000000000000000000000000

要转换回来,请使用带有2Double.longBitsToDouble 基数的Long.parseLong

doubleBits = Long.parseLong(doubleBitsStr, 2);
test = Double.longBitsToDouble(doubleBits);
System.out.println(test);

输出:0.5

要将float 的位转换为String,您可以使用Float.floatTointBits,它会创建一个与float 具有相同位的int,然后是Integer.toBinaryString 将其转换为一个String,位为字符。

float test2 = 0.5f;
int intBits = Float.floatToIntBits(test2);
String intBitsStr = Integer.toBinaryString(intBits);
System.out.println(intBitsStr);

输出:111111000000000000000000000000

要转换回来,请使用带有2Float.intBitsToFloat 基数的Integer.parseInt

intBits = Integer.parseInt(intBitsStr, 2);
test2 = Float.intBitsToFloat(intBits);
System.out.println(test2);

输出:0.5

【讨论】:

    【解决方案2】:

    Integer.toBinaryString(Float.floatToIntBits(yourNumber)); 不起作用吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 2017-06-16
      • 2016-05-01
      • 1970-01-01
      • 2016-01-01
      • 2015-12-02
      • 2018-10-11
      相关资源
      最近更新 更多