Crate fdecimal

Crate fdecimal 

Source
Expand description

Decimal

Decimal allows storing real number to arbitrary precision; which avoids common floating point errors (such as 0.1 + 0.2 ≠ 0.3) at the cost of complexity.

Internally, Decimal uses a 256-bit integer, paired with a 64-bit integer which determines the position of the decimal point. Therefore, the precision is not actually arbitrary, but limited to 263 decimal places.

Common numerical operations are overloaded, so we can treat them the same way we treat other numbers.

It is not recommended to convert a floating point number to a decimal directly, as the floating point representation may be unexpected.

§Example

use fdecimal::Decimal;
use std::str::FromStr;

let input = "0.8";
let dec = Decimal::from_str(&input).unwrap();
let float = f32::from_str(&input).unwrap();

println!("Input ({}) with decimals: {} vs {})", input, dec, float);

Structs§

Decimal
ParseDecimalError
U256
U512