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

如何在Rust中使用十六进制表示法指定浮点数文字?,rust,floating-point,hex,unsigned-integer,Rust,Floating Point,Hex,Unsigned Integer,我正在实现并且能够生成伪随机64位无符号整数。下一个挑战是从PRNGs u64在单位间隔内生成统一的双倍 应使用表达式将64位无符号整数x转换为64位双精度整数 (x>>11)*0x1.0p-53 在《铁锈》中如何评价这一点?尝试此操作时,我得到编译错误: 错误:不支持十六进制浮点文字 -->src/main.rs:30:56 | 30 | f64::from_位((x>>11)。包装_mul(0x1.0p-53)) |

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

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

(x>>11)*0x1.0p-53
在《铁锈》中如何评价这一点?尝试此操作时,我得到编译错误:

错误:不支持十六进制浮点文字
-->src/main.rs:30:56
|
30 | f64::from_位((x>>11)。包装_mul(0x1.0p-53))
|                                                        ^^^^^
您可以使用:

另见:

您可以使用:

另见:


有没有办法只使用std?试图了解发生了什么。@anobsiftly使用std如何帮助您了解发生了什么?但是,当然,只要把所有源代码从板条箱中复制到您自己的代码中。现在您没有了额外的板条箱。这是否与它们的实现相同:((x>>11)作为f64)*(f64::exp2(-53.0))?是否有一种仅使用std的方法?试图了解发生了什么。@anobsiftly使用std如何帮助您了解发生了什么?但是,当然,只要把所有源代码从板条箱中复制到您自己的代码中。现在您没有了额外的板条箱。这是否与它们的实现相同:((x>>11)与f64)*(f64::exp2(-53.0))?
#[macro_use]
extern crate hexf;

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