gpt4 book ai didi

floating-point - 如何在不使用不安全代码的情况下将 float 转换为二进制数?

转载 作者:行者123 更新时间:2023-11-29 07:52:24 24 4
gpt4 key购买 nike

有没有办法将 float (f32f64)转换为我可以按位访问的数据类型,例如 u32/u64?也就是说,对应于:

fn as_bits(i: f64) -> u64 {
unsafe { mem::transmute(i) }
}

但没有不安全。根据 rules,此代码是安全的,即使它可能不会在所有平台上返回相同的值,特别是对于 NaN。反向安全接口(interface)也很好。

最佳答案

引入了 Rust 1.20 f64::to_bitsf32::to_bits :

fn main() {
println!("{}", (4.2f64).to_bits())
}

在此之前,您需要使用不安全函数transmute。它们产生相同的结果:

use std::mem;

fn main() {
let float = 4.2f64;

let via_method = float.to_bits();
let via_transmute: u64 = unsafe { mem::transmute(float) };

assert_eq!(via_method, via_transmute);
}

关于floating-point - 如何在不使用不安全代码的情况下将 float 转换为二进制数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44377657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com