Javascript/PHP将64位整数解释为浮点


Javascript/PHP Interpret 64 bit integer as float

我有一个64位整数,我想将其解释为浮点。我可以用PHP或javascript进行这种解释,所以任何潜在的解决方案都可以选择自己的语言。

我并不是说我想重新分配4到4.0之类的内容。

我有以下8个字节的数据:

十二月(int):4619191942746344941

十二月(浮动):6.6666000000000000

十六进制:401AAA9930BE0DED

我有4619191942746344941存储在javascript/php代码中的一个变量中。如何将其转换为6.6666000000000000?

您可以使用pack

//$number = 4619191942746344941;
$pack = pack('H*', '401AAA9930BE0DED');
$pack = strrev($pack);
var_dump(unpack('d', $pack)); // 6.6666

演示

作为功能

function getFloatFromInteger($integer)
    {
    $hex = dechex($integer);
    $pack = pack('H*', $hex);
    $pack = strrev($pack);
    $result = unpack('d', $pack);
    return $result[1];
    }
var_dump(getFloatFromInteger(4619191942746344941));

附言:js上存在pack函数的实现。