G.CNS.01 对于科学计算中涉及浮点数近似值的常量宜使用预定义常量

【级别】 建议

【描述】

Rust标准库中已经提供了一些特殊常量的定义,其精确度通常会比开发者自行定义的高,所以若考虑数值精确度时则宜使用标准库已定义的特殊常量。

这些特殊常量都可以在标准库中找到,例如std::f32::consts

【反例】


#![allow(unused)]
fn main() {
let x = 3.14; // 不符合:自定义 Pi
let y = 1_f64 / x; // 不符合
}

【正例】


#![allow(unused)]
fn main() {
let x = std::f32::consts::PI; // 符合
let y = std::f64::consts::FRAC_1_PI; // 符合
}

【Lint 检测】

lint nameClippy 可检测Rustc 可检测Lint Grouplevel
approx_constantyesnoCorrectnessdeny

该 Lint 默认为 deny,但在某些场景下,可以设置为allow#![allow(clippy::approx_constant)]