【问题标题】:Get a double from a long created from Double.toLongBits从 Double.toLongBits 创建的 long 中获取双精度
【发布时间】:2021-12-14 19:51:42
【问题描述】:

有没有办法将我从Double.toLongBits 得到的long 反转回Double
以下方法不起作用:

Double n = 171.30672219;
System.out.println(Double.doubleToLongBits(n));
System.out.println(new Double(Double.doubleToLongBits(n)));  

打印出来:

4640231336019091517
4.6402313360190915E18

虽然我想找回171.30672219

【问题讨论】:

    标签: java types double decimal long-integer


    【解决方案1】:

    正如doubleToLongBitsdocumentation 所说:

    在所有情况下,结果都是一个长整数,当将其提供给 longBitsToDouble(long) 方法时,将产生一个与 doubleToLongBits 的参数相同的浮点值(除了所有 NaN 值都折叠为单个“规范”NaN 值)。

    double n = 171.30672219;
    System.out.println(Double.doubleToLongBits(n));
    System.out.println(Double.longBitsToDouble(Double.doubleToLongBits(n)));
    

    【讨论】:

      【解决方案2】:

      你可以这样做。

      Double n = 171.30672219;
      long bits = Double.doubleToLongBits(n);
      double d = Double.longBitsToDouble(bits);
      System.out.println(d);
      

      打印

      171.30672219
      

      欢迎来到IEEE 754 的世界。

      【讨论】:

        猜你喜欢
        • 2013-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-30
        • 1970-01-01
        • 2017-03-15
        • 1970-01-01
        相关资源
        最近更新 更多