Crate decimal_rs
source ·Expand description
High precision decimal with maximum precision of 38.
Optional features
serde
When this optional dependency is enabled, Decimal
implements the serde::Serialize
and
serde::Deserialize
traits.
Usage
To build a decimal, use Decimal
:
use decimal_rs::Decimal;
let n1: Decimal = "123".parse().unwrap();
let n2: Decimal = "456".parse().unwrap();
let result = n1 + n2;
assert_eq!(result.to_string(), "579");
To build a decimal from Rust primitive types:
use decimal_rs::Decimal;
let n1 = Decimal::from(123_i32);
let n2 = Decimal::from(456_i32);
let result = n1 + n2;
assert_eq!(result, Decimal::from(579_i32));
Decimal supports high precision arithmetic operations.
use decimal_rs::Decimal;
let n1: Decimal = "123456789.987654321".parse().unwrap();
let n2: Decimal = "987654321.123456789".parse().unwrap();
let result = n1 * n2;
assert_eq!(result.to_string(), "121932632103337905.662094193112635269");
Decimal can be encoded to bytes and decoded from bytes.
use decimal_rs::Decimal;
let n1 = "123456789.987654321".parse::<Decimal>().unwrap();
let mut bytes = Vec::new();
n1.encode(&mut bytes).unwrap();
let n2 = Decimal::decode(&bytes);
assert_eq!(n1, n2);
Structs
- High precision decimal.
Enums
- An error which can be returned when a conversion between other type and decimal fails.
- An error which can be returned when format decimal to string.
- An error which can be returned when parsing a decimal.
Constants
- When the precision of add/subtract/multiply result is not greater than
DECIMAL64_MAX_PRECISION
, useDECIMAL64
. - Maximum precision of
Decimal64
. - When the precision of add/subtract/multiply result is not greater than
MAX_PRECISION
, useDECIMAL128
. - Maximum binary data size of
Decimal
. - Maximum precision of
Decimal
.