代码之家  ›  专栏  ›  技术社区  ›  Micheal O'Dwyer

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

  •  -1
  • Micheal O'Dwyer  · 技术社区  · 7 年前

    我一直在用 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));
      |                             ^^
    

    这很有道理,因为 战俘() 函数不接受带符号整数作为参数。

    有没有任何方法可以将整数提升到有符号整数的幂,理想情况下不需要使用实验性的夜间API?是否有任何理由只允许无符号整数作为 战俘() 功能?

    我希望结果是0.5,类型是float。我现在看到一个允许这样做的函数可能不能直接在无符号整数上调用,因为这将导致其类型更改。

    如果不能直接在整数上调用函数,那么可能有一个函数同时将基数和幂作为参数并返回浮点数?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Shepmaster Tim Diekmann    7 年前

    我希望result[…]类型是一个float

    没有 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)
    

    另见:

    推荐文章