如何在Rust中将整数提高为有符号整数次幂?

时间:2018-07-30 21:56:17

标签: rust

我一直在对整数使用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。我现在看到,可能无法直接在无符号整数上调用允许此功能的函数,因为这将导致其类型更改。

如果不能直接在整数上调用此函数,也许有一个函数将基数和幂作为参数并返回浮点数?

1 个答案:

答案 0 :(得分:4)

  

我希望结果[...]类型为浮点数

Rust中没有float类型。如果回头参考The Rust Programming Language,特别是关于data types的章节,您会看到有两种内置的浮点类型:f32f64。提议的方法应该返回哪些?

  

我希望结果是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)

另请参阅: