Joh*_*off 4 floating-point ieee-754 rust
有没有办法将浮点数(f32或f64)转换为我可以按位访问的数据类型,如u32/ u64?也就是说,对应于:
fn as_bits(i: f64) -> u64 {
unsafe { mem::transmute(i) }
}
Run Code Online (Sandbox Code Playgroud)
但没有unsafe.根据规则,此代码是安全的,即使它可能不会在所有平台上返回相同的值,特别是对于NaN.反向安全界面也不错.
Rust 1.20介绍f64::to_bits和f32::to_bits:
fn main() {
println!("{}", (4.2f64).to_bits())
}
Run Code Online (Sandbox Code Playgroud)
在此之前,您需要使用不安全的功能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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
355 次 |
| 最近记录: |