#decimal #numeric #fixed #precision

decimal-rs

High precision decimal implementation for Rust

39 releases

0.1.39 Jun 29, 2022
0.1.37 May 20, 2022
0.1.34 Mar 25, 2022
0.1.27 Dec 31, 2021
0.1.0 Feb 2, 2021

#68 in Encoding

Download history 584/week @ 2022-04-20 929/week @ 2022-04-27 1006/week @ 2022-05-04 1804/week @ 2022-05-11 1047/week @ 2022-05-18 938/week @ 2022-05-25 1071/week @ 2022-06-01 1035/week @ 2022-06-08 689/week @ 2022-06-15 1043/week @ 2022-06-22 1101/week @ 2022-06-29 976/week @ 2022-07-06 917/week @ 2022-07-13 935/week @ 2022-07-20 981/week @ 2022-07-27 1106/week @ 2022-08-03

4,059 downloads per month
Used in yason

Apache-2.0

255KB
5.5K SLoC

decimal-rs

Apache-2.0 licensed Crate API

High precision decimal with maximum precision of 38.

Feature Flags

  • 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);

Rust Version

This version of decimal-rs requires Rust 1.51 or later.

License

This project is licensed under the Apache-2.0 license (LICENSE or http://www.apache.org/licenses/LICENSE-2.0).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in decimal-rs by you, shall be licensed as Apache-2.0, without any additional terms or conditions.

Dependencies

~0.6–1.1MB
~24K SLoC