2 个不稳定版本
0.2.0 | 2024 年 5 月 12 日 |
---|---|
0.1.0 | 2024 年 5 月 9 日 |
#232 in 调试
每月下载 60 次
在 2 个 代码包中使用
14KB
126 行
close-to-rs
提供了一个名为 Tolerate 的函数,用于验证任意精度下浮点数的等价性。
提供用于验证任意精度下浮点数等价性的函数和特质。
还存在一个用于与 assert-be-close 兼容的别名,因此更改代码包不需要更改代码。
assert-be-close 与之兼容的别名也存在,因此更改库不需要更改代码。
使用方法(Usage)
使用任意精度比较数值。
使用任意精度比较数值。
use close_to::{close_to, far_from};
fn example() {
let (is_close, expected_diff, received_diff) = close_to(1.0, 1.0001, 3);
assert!(is_close);
let (is_close, expected_diff, received_diff) = close_to(1.0, 1.0001, 4);
assert!(is_close); // panic!
let (is_close, expected_diff, received_diff) = far_from(1.0, 1.0001, 4);
assert!(is_close);
let (is_close, expected_diff, received_diff) = far_from(1.0, 1.0001, 3);
assert!(is_close); // panic!
}
如果第一个参数 T
是浮点数,并且第二个参数 U
实现了 Into<T>
,则可以比较不同类型的值。
如果第一个参数 T
是浮点数并且第二个参数 U
实现了 Into<T>
,则可以比较不同类型的值。
use close_to::{close_to, far_from};
fn example() {
close_to(1.0_f64, 1.0001_f32, 3);
close_to(1.0001_f64, 1_u8, 3);
close_to(1.0_f32, 1.0001_f64, 3); // the trait bound `f32: std::convert::From<f64>` is not satisfied [E0277]
}
还有一个函数,如果比较结果为假,则与调试表达式一起恐慌。
还有一个函数,如果比较结果为假,则与调试表达式一起恐慌。
use close_to::{assert_close_to, assert_far_from};
fn example() {
assert_close_to(1.0, 1.0001, 4); // panic with the following message
// assertion 'left ≈ right` failed
// left: 1
// right: 1.0001
// received_diff: 0.00009999999999998899
// expected_diff: 0.00005
assert_far_from(1.0, 1.0001, 3); // panic with the following message
// assertion 'left != right` failed
// left: 1
// right: 1.0001
// received_diff: 0.00009999999999998899
// expected_diff: 0.0005
}
还提供了特质来实现这些函数。默认情况下,它们为 f32
和 f64
实现。 T.close_to(U, precision)
和 close_to(T, U, precision)
有相同的行为。
我们还提供了实现这些功能的特例。默认情况下,它针对 f32
和 f64
进行了实现。函数 T.close_to(U, precision)
和 close_to(T, U, precision)
具有相同的行为。
use close_to::{AssertCloseTo, CloseTo};
fn example() {
let is_close = 1_f64.close_to(1.0001, 3).0;
assert!(is_close);
let is_close = 1_f64.close_to(1.0001, 4).0;
assert!(is_close); // panic!
1_f64.assert_close_to(1.0001, 4); // panic with the same message as `assert_close_to`
1_f64.assert_far_from(1.0001, 3); // panic with the same message as `assert_far_from`
}
许可证(License)
根据您选择的以下任一许可证
- Apache License, Version 2.0, (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
约 465KB