如何在 Rust 中使用十六进制表示法指定浮点数文字?

How to specify a floating point number literal using hexadecimal notation In Rust?

我正在实施 xoshiro256++ 并且我能够生成伪随机 64 位无符号整数。下一个挑战是从 PRNG u64 的单位间隔中生成均匀的双打。

a 64-bit unsigned integer x should be converted to a 64-bit double using the expression

(x >> 11) * 0x1.0p-53

在 Rust 中如何评价这一点?尝试这个我得到编译错误:

error: hexadecimal float literal is not supported
  --> src/main.rs:30:56
   |
30 |             f64::from_bits((x >> 11).wrapping_mul(0x1.0p-53))
   |                                                        ^^^^^

您可以使用 hexf crate:

#[macro_use]
extern crate hexf;

fn main() {
    let v = hexf64!("0x1.0p-53");
    println!("{}", v);
}

另请参阅: