rust 如何将一个数提升到幂?

wlzqhblo  于 2023-06-06  发布在  其他
关注(0)|答案(6)|浏览(288)

我试图使用插入符号运算符(^)将整数提升到幂,但我得到了令人惊讶的结果,例如:

assert_eq!(2^10, 8);

如何在Rust中执行求幂?

s71maibg

s71maibg1#

Rust通过方法powchecked_pow提供了求幂运算。后者防止溢出。因此,要将2提高到10的幂,请执行以下操作:

let base: i32 = 2; // an explicit type is required
assert_eq!(base.pow(10), 1024);

插入符号运算符^不用于求幂,它是bitwise XOR operator

w6lpcovy

w6lpcovy2#

以下是您可以使用的最简单的方法:

let a = 2; // Can also explicitly define type i.e. i32
let a = i32::pow(a, 10);

它将输出“2的10次方”,即:
1024

g52tjvyc

g52tjvyc3#

对于整数:

fn main() {
   let n = u32::pow(2, 10);
   println!("{}", n == 1024);
}

对于浮动:

fn main() {
   // example 1
   let f = f32::powf(2.0, 10.0);
   // example 2
   let g = f32::powi(2.0, 10);
   // print
   println!("{}", f == 1024.0 && g == 1024.0);
}

或者,因为基数是2,你也可以使用shift:

fn main() {
   let n = 2 << 9;
   println!("{}", n == 1024);
}
  • https://doc.rust-lang.org/std/primitive.f32.html#method.powf
  • https://doc.rust-lang.org/std/primitive.f32.html#method.powi
  • https://doc.rust-lang.org/std/primitive.u32.html#method.pow
cczfrluj

cczfrluj4#

我在尝试和OP一样的东西。感谢其他作者的回答。
这里有一个适合我的变体:

let n = 2u32.pow(10);

它使用literal unsigned 32 bit integer来设置类型和基,然后在其上调用pow()函数。

wqnecbli

wqnecbli5#

移位是处理这种特殊情况的一种好方法:

assert_eq!(1 << 10, 1024);
fumotvh3

fumotvh36#

在科学记数法中有一个文字的快捷方式。数字1e91 * i32::pow(10, 9)的文字。

相关问题