pub struct LegacyDouble(pub f64);
Expand description
Always behaves like an f64
Reads a string and parses it to f64 when connected to Flash or Nitro
Reads an f64 when connected to Unity
Tuple Fields§
§0: f64
Methods from Deref<Target = f64>§
pub const RADIX: u32 = 2u32
pub const MANTISSA_DIGITS: u32 = 53u32
pub const DIGITS: u32 = 15u32
pub const EPSILON: f64 = 2.2204460492503131E-16f64
pub const MIN: f64 = -1.7976931348623157E+308f64
pub const MIN_POSITIVE: f64 = 2.2250738585072014E-308f64
pub const MAX: f64 = 1.7976931348623157E+308f64
pub const MIN_EXP: i32 = -1_021i32
pub const MAX_EXP: i32 = 1_024i32
pub const MIN_10_EXP: i32 = -307i32
pub const MAX_10_EXP: i32 = 308i32
pub const NAN: f64 = NaN_f64
pub const INFINITY: f64 = +Inf_f64
pub const NEG_INFINITY: f64 = -Inf_f64
1.62.0 · Sourcepub fn total_cmp(&self, other: &f64) -> Ordering
pub fn total_cmp(&self, other: &f64) -> Ordering
Returns the ordering between self
and other
.
Unlike the standard partial comparison between floating point numbers,
this comparison always produces an ordering in accordance to
the totalOrder
predicate as defined in the IEEE 754 (2008 revision)
floating point standard. The values are ordered in the following sequence:
- negative quiet NaN
- negative signaling NaN
- negative infinity
- negative numbers
- negative subnormal numbers
- negative zero
- positive zero
- positive subnormal numbers
- positive numbers
- positive infinity
- positive signaling NaN
- positive quiet NaN.
The ordering established by this function does not always agree with the
PartialOrd
and PartialEq
implementations of f64
. For example,
they consider negative and positive zero equal, while total_cmp
doesn’t.
The interpretation of the signaling NaN bit follows the definition in the IEEE 754 standard, which may not match the interpretation by some of the older, non-conformant (e.g. MIPS) hardware implementations.
§Example
struct GoodBoy {
name: String,
weight: f64,
}
let mut bois = vec![
GoodBoy { name: "Pucci".to_owned(), weight: 0.1 },
GoodBoy { name: "Woofer".to_owned(), weight: 99.0 },
GoodBoy { name: "Yapper".to_owned(), weight: 10.0 },
GoodBoy { name: "Chonk".to_owned(), weight: f64::INFINITY },
GoodBoy { name: "Abs. Unit".to_owned(), weight: f64::NAN },
GoodBoy { name: "Floaty".to_owned(), weight: -5.0 },
];
bois.sort_by(|a, b| a.weight.total_cmp(&b.weight));
// `f64::NAN` could be positive or negative, which will affect the sort order.
if f64::NAN.is_sign_negative() {
assert!(bois.into_iter().map(|b| b.weight)
.zip([f64::NAN, -5.0, 0.1, 10.0, 99.0, f64::INFINITY].iter())
.all(|(a, b)| a.to_bits() == b.to_bits()))
} else {
assert!(bois.into_iter().map(|b| b.weight)
.zip([-5.0, 0.1, 10.0, 99.0, f64::INFINITY, f64::NAN].iter())
.all(|(a, b)| a.to_bits() == b.to_bits()))
}
Trait Implementations§
Source§impl Add<f32> for LegacyDouble
impl Add<f32> for LegacyDouble
Source§impl Add<f64> for LegacyDouble
impl Add<f64> for LegacyDouble
Source§impl Add for LegacyDouble
impl Add for LegacyDouble
Source§impl AddAssign<f32> for LegacyDouble
impl AddAssign<f32> for LegacyDouble
Source§fn add_assign(&mut self, rhs: f32)
fn add_assign(&mut self, rhs: f32)
+=
operation. Read moreSource§impl AddAssign<f64> for LegacyDouble
impl AddAssign<f64> for LegacyDouble
Source§fn add_assign(&mut self, rhs: f64)
fn add_assign(&mut self, rhs: f64)
+=
operation. Read moreSource§impl AddAssign for LegacyDouble
impl AddAssign for LegacyDouble
Source§fn add_assign(&mut self, rhs: Self)
fn add_assign(&mut self, rhs: Self)
+=
operation. Read moreSource§impl Clone for LegacyDouble
impl Clone for LegacyDouble
Source§fn clone(&self) -> LegacyDouble
fn clone(&self) -> LegacyDouble
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for LegacyDouble
impl Debug for LegacyDouble
Source§impl Default for LegacyDouble
impl Default for LegacyDouble
Source§fn default() -> LegacyDouble
fn default() -> LegacyDouble
Source§impl Deref for LegacyDouble
impl Deref for LegacyDouble
Source§impl DerefMut for LegacyDouble
impl DerefMut for LegacyDouble
Source§impl Display for LegacyDouble
impl Display for LegacyDouble
Source§impl Div<f32> for LegacyDouble
impl Div<f32> for LegacyDouble
Source§impl Div<f64> for LegacyDouble
impl Div<f64> for LegacyDouble
Source§impl Div for LegacyDouble
impl Div for LegacyDouble
Source§impl DivAssign<f32> for LegacyDouble
impl DivAssign<f32> for LegacyDouble
Source§fn div_assign(&mut self, rhs: f32)
fn div_assign(&mut self, rhs: f32)
/=
operation. Read moreSource§impl DivAssign<f64> for LegacyDouble
impl DivAssign<f64> for LegacyDouble
Source§fn div_assign(&mut self, rhs: f64)
fn div_assign(&mut self, rhs: f64)
/=
operation. Read moreSource§impl DivAssign for LegacyDouble
impl DivAssign for LegacyDouble
Source§fn div_assign(&mut self, rhs: Self)
fn div_assign(&mut self, rhs: Self)
/=
operation. Read moreSource§impl Mul<f32> for LegacyDouble
impl Mul<f32> for LegacyDouble
Source§impl Mul<f64> for LegacyDouble
impl Mul<f64> for LegacyDouble
Source§impl Mul for LegacyDouble
impl Mul for LegacyDouble
Source§impl MulAssign<f32> for LegacyDouble
impl MulAssign<f32> for LegacyDouble
Source§fn mul_assign(&mut self, rhs: f32)
fn mul_assign(&mut self, rhs: f32)
*=
operation. Read moreSource§impl MulAssign<f64> for LegacyDouble
impl MulAssign<f64> for LegacyDouble
Source§fn mul_assign(&mut self, rhs: f64)
fn mul_assign(&mut self, rhs: f64)
*=
operation. Read moreSource§impl MulAssign for LegacyDouble
impl MulAssign for LegacyDouble
Source§fn mul_assign(&mut self, rhs: Self)
fn mul_assign(&mut self, rhs: Self)
*=
operation. Read moreSource§impl Neg for LegacyDouble
impl Neg for LegacyDouble
Source§impl PacketVariable for LegacyDouble
impl PacketVariable for LegacyDouble
Source§impl PartialEq for LegacyDouble
impl PartialEq for LegacyDouble
Source§impl Rem<f32> for LegacyDouble
impl Rem<f32> for LegacyDouble
Source§impl Rem<f64> for LegacyDouble
impl Rem<f64> for LegacyDouble
Source§impl Rem for LegacyDouble
impl Rem for LegacyDouble
Source§impl RemAssign<f32> for LegacyDouble
impl RemAssign<f32> for LegacyDouble
Source§fn rem_assign(&mut self, rhs: f32)
fn rem_assign(&mut self, rhs: f32)
%=
operation. Read moreSource§impl RemAssign<f64> for LegacyDouble
impl RemAssign<f64> for LegacyDouble
Source§fn rem_assign(&mut self, rhs: f64)
fn rem_assign(&mut self, rhs: f64)
%=
operation. Read moreSource§impl RemAssign for LegacyDouble
impl RemAssign for LegacyDouble
Source§fn rem_assign(&mut self, rhs: Self)
fn rem_assign(&mut self, rhs: Self)
%=
operation. Read moreSource§impl Sub<f32> for LegacyDouble
impl Sub<f32> for LegacyDouble
Source§impl Sub<f64> for LegacyDouble
impl Sub<f64> for LegacyDouble
Source§impl Sub for LegacyDouble
impl Sub for LegacyDouble
Source§impl SubAssign<f32> for LegacyDouble
impl SubAssign<f32> for LegacyDouble
Source§fn sub_assign(&mut self, rhs: f32)
fn sub_assign(&mut self, rhs: f32)
-=
operation. Read moreSource§impl SubAssign<f64> for LegacyDouble
impl SubAssign<f64> for LegacyDouble
Source§fn sub_assign(&mut self, rhs: f64)
fn sub_assign(&mut self, rhs: f64)
-=
operation. Read moreSource§impl SubAssign for LegacyDouble
impl SubAssign for LegacyDouble
Source§fn sub_assign(&mut self, rhs: Self)
fn sub_assign(&mut self, rhs: Self)
-=
operation. Read more