Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I cast between f32 and u32 without changing the bits?

So i’m making a virtual machine which takes in a sequence of 32 bits (so multiple batches of 32 bits) and they’re represented as u32s, but in reality the number could be a f32 but just wrapped in a u32. My program knows when a u32 actually represents a f32, but I’m not sure how to convert them. If I used as would it do rounding or would it just shove the bits between the formats (I want the latter)? Because what I want is to convert between u32 and f32 without changing any of the underlying bits, I just want to call it a different thing. Here for example I’m worried that my as u32 won’t be doing what I want it to be doing:

pub fn give_velocity(spell: &mut Spell, parameters: &[u32], should_execute: bool) -> Option<u32> {
    match should_execute {
        true => Some((spell.energy * sqrt((parameters[0] * parameters[0] + parameters[1] * parameters[1] + parameters[2] * parameters[2]) as f64)) as u32),
        false => None
    }
}

Also ignore the fact that should_execute is useless right now, it’s not finished.

Edit: My question has been answered for how to convert f32 to u32 but what about u32 to f32?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

To get the underlying bits of an f32 value as a u32, use f32::to_bits. To do the reverse, use f32::from_bits(_):

fn main() {
    let value: f32 = 1.23;
    let u32 = value.to_bits();
    println!("{}, {}", value, u32);
    assert_eq!(value, f32::from_bits(u32));
}

Output:

1.23, 1067282596
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading