我尝试使用插入符号运算符(^)将一个整数提升为幂,但是我得到了令人惊讶的结果,例如:
^
assert_eq!(2^10, 8);
如何在 Rust 中执行幂运算?
Rust provides exponentiation via methods pow and checked_pow. The latter guards against overflows. Thus, to raise 2 to the power of 10, do:
pow
checked_pow
let base: i32 = 2; // an explicit type is required assert_eq!(base.pow(10), 1024);
The caret operator ^ is not used for exponentiation, it's the bitwise XOR operator.
Here is the simplest method which you can use:
let a = 2; // Can also explicitly define type i.e. i32 let a = i32::pow(a, 10);
It will output "2 raised to the power of 10", i.e.:
1024
For integers:
fn main() { let n = u32::pow(2, 10); println!("{}", n == 1024); }
For floats:
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); }
or, since your base is 2, you can also use shift:
fn main() { let n = 2 << 9; println!("{}", n == 1024); }
I was trying the same thing as the OP. Thanks to the other answer authors.
Here's a variation that works for me:
let n = 2u32.pow(10);
This uses a literal unsigned 32 bit integer to set the type and base, then calls the pow() function on it.
pow()
Bit shifting is a good way to do this particular case:
assert_eq!(1 << 10, 1024);