fn frexp(value: f64) -> (f64, i32) {
if value == 0.0 {
return (0.0, 0);
}
let abs_value = value.abs();
let exponent = abs_value.log2().floor() as i32 + 1;
let fraction = value / 2f64.powi(exponent);
(fraction, exponent)
}
fn main() {
let d = 3.14;
let (fraction, exponent) = frexp(d);
println!("fraction = {:.3} exponent = {}", fraction, exponent);
}
/*
run:
fraction = 0.785 exponent = 2
*/