Mat*_*aun 18 operators exponentiation rust
我试图使用插入符号运算符(^
)将整数提升到一个幂,但我得到了令人惊讶的结果,例如:
assert_eq!(2^10, 8);
Run Code Online (Sandbox Code Playgroud)
搜索DuckDuckGo和谷歌没有透露任何相关信息.
如何在Rust中执行取幂?
小智 16
对于整数:
fn main() {
let n = u32::pow(2, 10);
println!("{}", n == 1024);
}
Run Code Online (Sandbox Code Playgroud)
对于浮标:
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);
}
Run Code Online (Sandbox Code Playgroud)
或者,由于你的底数是 2,你也可以使用shift:
fn main() {
let n = 2 << 9;
println!("{}", n == 1024);
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*aun 15
插入符号运算符^
不用于取幂,它是按位XOR运算符.
通过除锈方法提供幂pow
和checked_pow
其警卫对溢出.
因此,要将2提高到10的幂,请执行以下操作:
let base: i32 = 2; // an explicit type is required
assert_eq!(base.pow(10), 1024);
Run Code Online (Sandbox Code Playgroud)
Mor*_*pin 10
我正在尝试与OP相同的事情。感谢其他答案作者。
这是对我有用的变体:
let n = 2u32.pow(10);
Run Code Online (Sandbox Code Playgroud)
它使用文字无符号 32 位整数来设置类型和基数,然后调用pow()
其上的函数。
小智 9
这是您可以使用的最简单的方法:
let a = 2; // Can also explicitly define type i.e. i32
let a = i32::pow(a, 10);
Run Code Online (Sandbox Code Playgroud)
它将输出“2 的 10 次方”,即:
1024
归档时间: |
|
查看次数: |
4106 次 |
最近记录: |