如何访问Rust标准库中定义的浮点常量?
例如,我想将静态定义的1 / sqrt(2)用于64位浮点数:
use std::f64;
//Float::frac_1_sqrt2(); // use of undeclared module Float
//Float.frac_1_sqrt2(); // unresolved name Float
//f64::frac_1_sqrt2(); // unresolved name f64::frac...
//f64.frac_1_sqrt2(); // unresolved name f64
//1.0f64.frac_1_sqrt2(); // f64 doesn't implement frac_1_sqrt2
//frac_1_sqrt2::<f64>(1.0) // frac_1_sqrt2 unresolved
//frac_1_sqrt2::(1.0f64) // frac_1_sqrt2 unresolved
//f64::frac_1_sqrt2(1.0f64) // frac_1_sqrt2 unresolved
答案 0 :(得分:4)
//Float::frac_1_sqrt2(); // use of undeclared module Float
这是正确的,但你必须将Float
带入范围或用绝对路径解决它。接下来,你需要给它一个推理提示,以便它知道你想要的浮点类型Float
。以下作品:
use std::num::Float;
let x: f64 = Float::frac_1_sqrt2();
println!("{}", x);
答案 1 :(得分:4)
您可以简单地使用f64::consts
中定义的静态常量(和f32::consts
中的等价物):
use std::f64;
fn main() {
let a = f64::consts::FRAC_1_SQRT2;
}