NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #774 most downloaded on crates.io
Arbitrary precision decimal numbers
Last release 10 days ago
28 Sep 2026
Release timing varies
gaps range from 6 weeks to 1.7 years
Some releases are documented
notes for 11 of 26 stable releases
1 version withdrawn
withdrawn after publishing
10 years old
27 releases · first in 2017
Fix implementation of square root, inverse, and exp
Add comparison operators between BigDecimal and primitive integers
One column per quarter.
Add methods BigDecimal::{powi, powi_with_context} for raising a decimal to a i64 power
Add methods BigDecimal::{powi, powi_with_context} for raising a decimal to a i64 power
powi uses Default ContextAdd methods BigDecimal::mul_with_context for efficient multiplication to fixed precision
Add method BigDecimal::decimal_digit_count, returning number of decimal digits (i.e. precision) of the number
Add method BigDecimal::order_of_magnitude, returning position of most significant digit of this decimal
Add method BigDecimal::is_one_quickcheck, returning Option<bool> indicating if the value is 1.0 if it can be calculated without allocating, or None if too large
is_one in multiplication methods when used for optimizations
1.00000000000000000000000000000000000000000 is stored internally as[4870020673419870208, 16114848830623546549, 293] E -41 and it's hard to tell this is equivalent to 1Add optimizations to inverse
1/10e-5 -> 10e5Add Context::invert(&self, BigDecimalRef), equivalent to BigDecimal::inverse_with_context(&self, &ctx)
Fix broken link in README.md by @jonahgao in #142
0e15 = 0*10^15) by @drinkcat in #145Full Changelog: v0.4.7...v0.4.8
Fixed bug in BigDecimal::to_f64
BigDecimal::to_f64num_traits::ToPrimitive for BigDecimalRefBigDecimal::{ToPlainString,WritePlainString}Fix error in formatting code that would skip "carrying the one" when rounding up series of nines, overflowing
Fix error in formatting code that would skip "carrying the one" when rounding up series of nines, overflowing
Improved implementation of sqrt and cbrt
Uses consistent rounding implementations in formatting and arithmetic operations
Add new constructor methods BigDecimal::from_bigint & BigDecimal::from_biguint
Remove restrictions on num-* dependencies.
Remove restrictions on num-* dependencies.
Fix some bad assumptions when running in 32 bit mode.
as usize have been replaced with as u64Revert formatting semantics to match Rust's meanings rather than Python's
"{:.4}" has returned to "4 digits after decimal place" rather than "four digits of precision"Note
Please add your own tests to ensure this library formats (and continues to format) numbers as you expect
Added methods
BigDecimalRef::clone_intoBigDecimal::set_scale (mutable version of take_and_scale)Optimized bigdecimal comparison algorithms
Restricted versions of num-* crates to respect Minimum Supported Rust Version (1.43)
Use exponential formatting (scientific-notation) if number of leading zeros is greater than 5
1234e-304 is formatted as 1.234e-301 rather than 0.00.....(300-zeros)....00123>>> Decimal("1.2") + Decimal("0.00000")
Decimal('1.20000')For user-controlled precision and rounding
Add Context struct
sqrt_with_context(&self, ctx: &Context)) , more to come in future versions.Add BigDecimalRef struct
Add,SubFrom<&BigInt> for BigDecimalRefCompile-time default rounding mode may be set by environment variable RUST_BIGDECIMAL_DEFAULT_ROUNDING_MODE
Fix issue recompiling if RUST_BIGDECIMAL_DEFAULT_PRECISION haddn't changed
Add BigDecimal::with_precision_round()
Add BigDecimal::fractional_digit_count()
Support reading subnormal floating-point numbers
Improve initial "guess" in calculation of inverted value.
Fix panic in from_str_radix (#115)
(internal) Reorganize std::ops implementations by moving each to separate functions (src/impl_ops_add.rs, src/impl_ops_sub.rs, etc)
BigDecimal::eq takes into account trailing zeros, avoids aligning digitsten_to_the - used everywhere to align BigIntegers within BigDecimals, all operations with high precision numbers should be fasterFix issue where RUST_BIGDECIMAL_DEFAULT_PRECISION envar would always trigger a rebuild
Fix issue where RUST_BIGDECIMAL_DEFAULT_PRECISION envar would always
trigger a rebuild
Fix issue where .neg() could be called on {signed-int}::MIN values
Add implementations of Add/Sub/Mul/Div for primitive values
Use 'proptest' crate to improve arithmetic testing
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →