# [−][src]Crate bigdecimal

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 bigdecimal::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

 BigDecimal A big decimal type.

## Enums

 ParseBigDecimalError

## Traits

 FromPrimitive A generic trait for converting a number to a value. Num The base trait for numeric types, covering `0` and `1` values, comparisons, basic numeric operations, and string conversion. One Defines a multiplicative identity element for `Self`. Signed Useful functions for signed numbers (i.e. numbers that can be negative). ToPrimitive A generic trait for converting a value to a number. Zero Defines an additive identity element for `Self`.