pub struct VariantDecimal8 {
integer: i64,
scale: u8,
}Expand description
Represents an 8-byte decimal value in the Variant format.
This struct stores a decimal number using a 64-bit signed integer for the coefficient and an 8-bit unsigned integer for the scale (number of decimal places). Its precision is between 10 and 18 digits.
For valid precision and scale values, see the Variant specification:
§Example: Create a VariantDecimal8
// Create a value representing the decimal 123456.78
let decimal = VariantDecimal8::try_new(12345678, 2).expect("Failed to create decimal");Fields§
§integer: i64§scale: u8Implementations§
Source§impl VariantDecimal8
impl VariantDecimal8
Sourcepub const MAX_PRECISION: u8 = arrow_schema::DECIMAL64_MAX_PRECISION
pub const MAX_PRECISION: u8 = arrow_schema::DECIMAL64_MAX_PRECISION
Maximum number of significant digits (18 for 8-byte decimals)
Source§impl VariantDecimal8
impl VariantDecimal8
Sourcepub fn try_new(integer: i64, scale: u8) -> Result<Self, ArrowError>
pub fn try_new(integer: i64, scale: u8) -> Result<Self, ArrowError>
Attempts to create a new instance of this decimal type, failing if the value is too wide or the scale is too large.
Sourcepub fn integer(&self) -> i64
pub fn integer(&self) -> i64
Returns the unscaled integer value of the decimal.
For example, if the decimal is 123.45, this will return 12345.
Sourcepub fn scale(&self) -> u8
pub fn scale(&self) -> u8
Returns the scale of the decimal (how many digits after the decimal point).
For example, if the decimal is 123.45, this will return 2.
Sourcepub fn as_integer(&self) -> Option<i64>
pub fn as_integer(&self) -> Option<i64>
Returns Some(i64) if scale is zero or integer of the decimal is divisible by 10^scale,
None for other values.
§Examples
use parquet_variant::VariantDecimal8;
//Return the integer if scale is 0
let d1 = VariantDecimal8::try_new(123, 0).unwrap();
assert_eq!(d1.as_integer(), Some(123));
// or if the integer is divisible by 10^scale
let d2 = VariantDecimal8::try_new(100, 2).unwrap();
assert_eq!(d2.as_integer(), Some(1));
// or the integer is negative and divisible by 10^scale
let d3 = VariantDecimal8::try_new(-100, 2).unwrap();
assert_eq!(d3.as_integer(), Some(-1));
// or if the integer is 0
let d4 = VariantDecimal8::try_new(0, 4).unwrap();
assert_eq!(d4.as_integer(), Some(0));
// but not if the integer is not divisible by 10^scale
let d5 = VariantDecimal8::try_new(123, 2).unwrap();
assert_eq!(d5.as_integer(), None);
// or the integer is negative and not divisible by 10^scale
let d6 = VariantDecimal8::try_new(-123, 2).unwrap();
assert_eq!(d6.as_integer(), None);Trait Implementations§
Source§impl Clone for VariantDecimal8
impl Clone for VariantDecimal8
Source§fn clone(&self) -> VariantDecimal8
fn clone(&self) -> VariantDecimal8
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for VariantDecimal8
Source§impl Debug for VariantDecimal8
impl Debug for VariantDecimal8
Source§impl Display for VariantDecimal8
impl Display for VariantDecimal8
Source§impl From<VariantDecimal4> for VariantDecimal8
impl From<VariantDecimal4> for VariantDecimal8
Source§fn from(decimal: VariantDecimal4) -> Self
fn from(decimal: VariantDecimal4) -> Self
Source§impl From<VariantDecimal8> for VariantDecimal16
impl From<VariantDecimal8> for VariantDecimal16
Source§fn from(decimal: VariantDecimal8) -> Self
fn from(decimal: VariantDecimal8) -> Self
Source§impl From<VariantDecimal8> for Variant<'_, '_>
impl From<VariantDecimal8> for Variant<'_, '_>
Source§fn from(value: VariantDecimal8) -> Self
fn from(value: VariantDecimal8) -> Self
Source§impl PartialEq for VariantDecimal8
impl PartialEq for VariantDecimal8
impl StructuralPartialEq for VariantDecimal8
Source§impl TryFrom<VariantDecimal8> for VariantDecimal4
impl TryFrom<VariantDecimal8> for VariantDecimal4
Source§impl TryFrom<VariantDecimal16> for VariantDecimal8
impl TryFrom<VariantDecimal16> for VariantDecimal8
Source§impl TryFrom<i64> for VariantDecimal8
impl TryFrom<i64> for VariantDecimal8
Source§impl VariantDecimalType for VariantDecimal8
impl VariantDecimalType for VariantDecimal8
Source§const MAX_PRECISION: u8 = Self::MAX_PRECISION
const MAX_PRECISION: u8 = Self::MAX_PRECISION
Source§const MAX_UNSCALED_VALUE: i64
const MAX_UNSCALED_VALUE: i64
Self::MAX_PRECISION digits.Source§fn try_new(integer: i64, scale: u8) -> Result<Self, ArrowError>
fn try_new(integer: i64, scale: u8) -> Result<Self, ArrowError>
MAX_PRECISION. Read more