简单问题:
sin()
在哪里?我搜索过了,只在 Rust 文档中发现有像 std::num::Float
这样的特性需要 sin,但没有找到具体的实现。sin()
在哪里?我搜索过了,只在 Rust 文档中发现有像 std::num::Float
这样的特性需要 sin,但没有找到具体的实现。Float
特质已被移除,现在这些方法是类型的固有实现(f32
、f64
)。这意味着访问数学函数时需要输入的内容更少了一点:
fn main() {
let val: f32 = 3.14159;
println!("{}", val.sin());
}
但是,3.14159.sin()
引用的是32位还是64位数字是不明确的,因此您需要明确指定。
上面,我设置了变量的类型,但您也可以使用类型后缀:
fn main() {
println!("{}", 3.14159_f64.sin());
}
您还可以使用完全限定语法:
fn main() {
println!("{}", f32::sin(3.14159));
}
真正的代码应该使用PI
常量;我使用了内联数字以避免复杂化问题。
Float
是一个 Trait,包含实现,导入后可以应用于 f32 或 f64。
use std::num::Float;
fn main() {
println!("{}", 1.0f64.sin());
}
Float
特质已被移除,正如 @Shepmaster 所提到的。 - tripulse
f64
(相关RFC)。如果你想让它正常工作,而不升级,请尝试3.14f64.sin()
。 - Shepmasterstd::num::FloatMath
特性的一部分所致(而不是字面上的默认值),但也可以通过升级来解决这个问题(我也建议使用multirust)。 - huon