我试图使用插入符号运算符(^)将整数提升到幂,但我得到了令人惊讶的结果,例如:
^
assert_eq!(2^10, 8);
如何在Rust中执行求幂?
s71maibg1#
Rust通过方法pow和checked_pow提供了求幂运算。后者防止溢出。因此,要将2提高到10的幂,请执行以下操作:
pow
checked_pow
let base: i32 = 2; // an explicit type is required assert_eq!(base.pow(10), 1024);
插入符号运算符^不用于求幂,它是bitwise XOR operator。
w6lpcovy2#
以下是您可以使用的最简单的方法:
let a = 2; // Can also explicitly define type i.e. i32 let a = i32::pow(a, 10);
它将输出“2的10次方”,即:1024
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); }
cczfrluj4#
我在尝试和OP一样的东西。感谢其他作者的回答。这里有一个适合我的变体:
let n = 2u32.pow(10);
它使用literal unsigned 32 bit integer来设置类型和基,然后在其上调用pow()函数。
pow()
wqnecbli5#
移位是处理这种特殊情况的一种好方法:
assert_eq!(1 << 10, 1024);
fumotvh36#
在科学记数法中有一个文字的快捷方式。数字1e9是1 * i32::pow(10, 9)的文字。
1e9
1 * i32::pow(10, 9)
6条答案
按热度按时间s71maibg1#
Rust通过方法
pow
和checked_pow
提供了求幂运算。后者防止溢出。因此,要将2提高到10的幂,请执行以下操作:插入符号运算符
^
不用于求幂,它是bitwise XOR operator。w6lpcovy2#
以下是您可以使用的最简单的方法:
它将输出“2的10次方”,即:
1024
g52tjvyc3#
对于整数:
对于浮动:
或者,因为基数是2,你也可以使用shift:
cczfrluj4#
我在尝试和OP一样的东西。感谢其他作者的回答。
这里有一个适合我的变体:
它使用literal unsigned 32 bit integer来设置类型和基,然后在其上调用
pow()
函数。wqnecbli5#
移位是处理这种特殊情况的一种好方法:
fumotvh36#
在科学记数法中有一个文字的快捷方式。数字
1e9
是1 * i32::pow(10, 9)
的文字。