数学计算
数学常量
Rust中的常数定义在std::f32::consts与std::f64::consts模块中。
常数变量 | 含义 |
---|---|
E | 自然对数的底 (e) |
FRAC_1_PI | 1/π |
FRAC_1_SQRT_2 | 1/sqrt(2) |
FRAC_2_PI | 2/π |
FRAC_2_SQRT_PI | 2/sqrt(π) |
FRAC_PI_2 | π/2 |
FRAC_PI_3 | π/3 |
FRAC_PI_4 | π/4 |
FRAC_PI_6 | π/6 |
FRAC_PI_8 | π/8 |
LN_2 | ln(2) |
LN_10 | ln(10) |
LOG10_E | log10(e) |
LOG2_E | log2(e) |
PI | 圆周率 (π) |
SQRT_2 | sqrt(2) |
例:使用数学常数。
let e_f32 = std::f32::consts::E;
let pi_f64 = std::f64::consts::PI;
println!("e = {}; pi = {}", e_f32,pi_f64);
数学函数
Rust不像其他语言为计算专门提供了Math相关库。Rust的数学函数只提供给了f32与f64类型,其他来下数字需要进行Math计算,需要先转换成相应数值类型。
let x = 3.14159f32;
let sin_x = x.sin();
println!("sin({}) = {}",x,sin_x );
let y:i32 = 2;
let pow_y = y.pow(3);
println!("pow({},3) = {}", y,pow_y);
浮点数的数学计算
对于浮点数,Rust提供了比较充足的计算函数,但是需要注意Rust只针对i32与i64提供了较多的计算函数。
辨析:
let x = 3.14159;
let sin_x = x.sin(); // 编译出错。
这样写编译会出错。原因是这种方式赋值的x,其类型为float。float类型没有sin方法,所以必须明确声明x的类型为f32或f64。
整数的数学计算
对于整数,Rust只提供了一些基础的计算函数,如pow(),abs(),signum()等,不提供如三角函数一类的常见数学函数。