我一直在对整数使用pow()
方法。我尝试将u32
提升为负数,导致编译错误。
fn main() {
println!("{}", 2u32.pow(-1));
}
error[E0600]: cannot apply unary operator `-` to type `u32`
--> src/main.rs:2:29
|
2 | println!("{}", 2u32.pow(-1));
| ^^
这很合理,因为pow()
函数不使用带符号整数作为参数。
是否有任何方法可以将整数提高为有符号整数次方,理想情况下无需使用实验性夜间API?有什么理由只允许将无符号整数作为pow()
函数的参数?
我希望结果为0.5,并且类型为float。我现在看到,可能无法直接在无符号整数上调用允许此功能的函数,因为这将导致其类型更改。
如果不能直接在整数上调用此函数,也许有一个函数将基数和幂作为参数并返回浮点数?
答案 0 :(得分:4)
我希望结果[...]类型为浮点数
Rust中没有float
类型。如果回头参考The Rust Programming Language,特别是关于data types的章节,您会看到有两种内置的浮点类型:f32
和f64
。提议的方法应该返回哪些?
我希望结果是0.5
(2u32 as f32).powi(-1)
(2u32 as f64).powi(-1)
如果此类函数不能直接在整数上调用
任何method都可以称为函数:
f32::powi(2u32 as f32, -1)
f64::powi(2u32 as f64, -1)
另请参阅: