- var_dump: documentation ( source)
- round: documentation ( source)
- pack: documentation ( source)
- unpack: documentation ( source)
<?php
function encode($int) {
$int = round($int);
$left = 0xffffffff00000000;
$right = 0x00000000ffffffff;
$l = ($int & $left) >>32;
$r = $int & $right;
return unpack('d', pack('N2', $l, $r))[1];
}
function decode($float) {
$set = unpack('N2', pack('d', $float));
return $set[1] << 32 | $set[2];
}
echo decode(encode(10000000000000)).'<br><br>';
$float = encode(10000000000000);
echo $float.'<br>';
echo decode($float).'<br>';
echo decode(1.1710299640683E-305).'<br>';
echo 1.1710299640683E-305;echo "<br>";
var_dump(1.1710299640683E-305 == $float);