function frexp($value) {
if ($value == 0.0) {
return [0.0, 0];
}
$exponent = (int) floor(log(abs($value), 2)) + 1;
$fraction = $value / pow(2, $exponent);
return [$fraction, $exponent];
}
$d = 3.14;
list($fraction, $exponent) = frexp($d);
printf("fraction = %.3f exponent = %d\n", $fraction, $exponent);
/*
run:
fraction = 0.785 exponent = 2
*/