#numeric #comparison #compare

num-cmp

Comparison between differently typed numbers

1 unstable release

Uses old Rust 2015

0.1.0 Mar 2, 2017

#24 in #comparison

Download history 19317/week @ 2022-11-26 19987/week @ 2022-12-03 21130/week @ 2022-12-10 18939/week @ 2022-12-17 8479/week @ 2022-12-24 17216/week @ 2022-12-31 20251/week @ 2023-01-07 19701/week @ 2023-01-14 21295/week @ 2023-01-21 22641/week @ 2023-01-28 21868/week @ 2023-02-04 23063/week @ 2023-02-11 22687/week @ 2023-02-18 24805/week @ 2023-02-25 37963/week @ 2023-03-04 28970/week @ 2023-03-11

117,992 downloads per month
Used in 60 crates (via jsonschema)

MIT/Apache

43KB
892 lines

num-cmp

The NumCmp trait for comparison between differently typed numbers.

use std::f32;
use std::cmp::Ordering;
use num_cmp::NumCmp;

assert!(NumCmp::num_eq(3u64, 3.0f32));
assert!(NumCmp::num_lt(-4.7f64, -4i8));
assert!(!NumCmp::num_ge(-3i8, 1u16));

// 40_000_000 can be exactly represented in f32, 40_000_001 cannot
assert_eq!(NumCmp::num_cmp(40_000_000.0f32, 40_000_000u32), Some(Ordering::Equal));
assert_ne!(NumCmp::num_cmp(40_000_001.0f32, 40_000_001u32), Some(Ordering::Equal));
assert_eq!(NumCmp::num_cmp(f32::NAN,        40_000_002u32), None);

The i128 Cargo feature can be enabled in nightly to get support for i128 and u128 types as well, which is being implemented in Rust issue #35118.


lib.rs:

The NumCmp trait for comparison between differently typed numbers.

use std::f32;
use std::cmp::Ordering;
use num_cmp::NumCmp;

assert!(NumCmp::num_eq(3u64, 3.0f32));
assert!(NumCmp::num_lt(-4.7f64, -4i8));
assert!(!NumCmp::num_ge(-3i8, 1u16));

// 40_000_000 can be exactly represented in f32, 40_000_001 cannot
assert_eq!(NumCmp::num_cmp(40_000_000.0f32, 40_000_000u32), Some(Ordering::Equal));
assert_ne!(NumCmp::num_cmp(40_000_001.0f32, 40_000_001u32), Some(Ordering::Equal));
assert_eq!(NumCmp::num_cmp(f32::NAN,        40_000_002u32), None);

The i128 Cargo feature can be enabled in nightly to get support for i128 and u128 types as well, which is being implemented in Rust issue #35118.

No runtime deps

Features

  • i128