Expand description
A Big Decimal
BigDecimal
allows storing any 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, BigDecimal
uses a BigInt
object, 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 bigfloppa::BigDecimal;
use std::str::FromStr;
let input = "0.8";
let dec = BigDecimal::from_str(&input).unwrap();
let float = f32::from_str(&input).unwrap();
println!("Input ({}) with 10 decimals: {} vs {})", input, dec, float);
Structs
- A big decimal type.
- A big signed integer type.
Enums
- A Sign is a
BigInt
’s composing element.
Traits
- A generic trait for converting a number to a value.
- The base trait for numeric types, covering
0
and1
values, comparisons, basic numeric operations, and string conversion. - Defines a multiplicative identity element for
Self
. - Useful functions for signed numbers (i.e. numbers that can be negative).
- A generic trait for converting a value to a
BigInt
. This may returnNone
when converting fromf32
orf64
, and will always succeed when converting from any integer or unsigned primitive, orBigUint
. - A generic trait for converting a value to a number.
- Defines an additive identity element for
Self
.