首页 > 解决方案 > 如何在 Rust 中使用十六进制表示法指定浮点数文字?

问题描述

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

应使用表达式将 64 位无符号整数 x 转换为 64 位双精度

(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))
   |                                                        ^^^^^

标签: rustfloating-pointhexunsigned-integer

解决方案


您可以使用hexf 板条箱

#[macro_use]
extern crate hexf;

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

也可以看看:


推荐阅读