首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Rust中将整数升幂为有符号整数幂?

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

Stack Overflow用户
提问于 2018-07-31 05:56:17
回答 1查看 1.9K关注 0票数 2

我一直在对整数使用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,类型是一个浮点数。我现在看到一个允许这种情况的函数可能不能直接在无符号整数上调用,因为这会导致它的类型改变。

也许有一个函数同时接受基数和幂作为参数,并返回一个浮点数,如果这样的函数不能直接在整数上调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 08:28:40

我期望结果是...类型将为浮点型。

Rust中没有float类型。如果你回头参考,特别是关于data types的章节,你会看到有两种内置的浮点类型:f32f64。这个建议的方法应该返回其中的哪一个?

我希望结果是0.5

(2u32 as f32).powi(-1)
(2u32 as f64).powi(-1)

如果此类函数不能直接对整数调用,则为

任何都可以作为函数进行调用

f32::powi(2u32 as f32, -1)
f64::powi(2u32 as f64, -1)

另请参阅:

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51602816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档