[−][src]Trait fixed::traits::ToFixed
This trait provides checked conversions to fixed-point numbers.
This trait is implemented for conversions between integer primitives, floating-point primitives and fixed-point numbers.
Examples
use fixed::traits::ToFixed; use fixed::types::{U8F8, U16F16}; let f: U8F8 = 13.5f32.to_fixed(); assert_eq!(f, U8F8::from_bits((13 << 8) | (1 << 7))); // 0x1234.5678 is too large and can be wrapped to 0x34.56 let too_large = U16F16::from_bits(0x1234_5678); let checked: Option<U8F8> = too_large.checked_to_num(); assert_eq!(checked, None); let saturating: U8F8 = too_large.saturating_to_num(); assert_eq!(saturating, U8F8::max_value()); let wrapping: U8F8 = too_large.wrapping_to_num(); assert_eq!(wrapping, U8F8::from_bits(0x3456)); let overflowing: (U8F8, bool) = too_large.overflowing_to_num(); assert_eq!(overflowing, (U8F8::from_bits(0x3456), true));
Required methods
fn to_fixed<F: Fixed>(self) -> F
Converts to a fixed-point number.
Any extra fractional bits are truncated.
Panics
Panics if self
is a floating-point number that is not finite.
When debug assertions are enabled, also panics if the value
does not fit. When debug assertions are not enabled, the
wrapped value can be returned, but it is not considered a
breaking change if in the future it panics; if wrapping is
required use wrapping_to_fixed
instead.
fn checked_to_fixed<F: Fixed>(self) -> Option<F>
Converts to a fixed-point number if it fits, otherwise returns None
.
Any extra fractional bits are truncated.
fn saturating_to_fixed<F: Fixed>(self) -> F
Converts to a fixed-point number, saturating if it does not fit.
Any extra fractional bits are truncated.
Panics
Panics if self
is a floating-point number that is NaN.
fn wrapping_to_fixed<F: Fixed>(self) -> F
Converts to a fixed-point number, wrapping if it does not fit.
Any extra fractional bits are truncated.
Panics
Panics if self
is a floating-point number that is not finite.