Skip to main content
.NETFramework4.8.NETCoreApp3.1net6.0-windows7.0.NETStandard2.1

An arbitrary precision decimal class with. Implemented as a arbitrary precision floating poing number using a mantessa and exponent.

Published
Dec 13, 2022
3y ago
Total Downloads
37.6M
37,634,442

Install

dotnet add package ExtendedNumerics.BigDecimal --version 2022.346.2122
ProductVersions
.NET
net6.0-windows7.0
.NET Standard
netstandard2.1
Other
.NETCoreApp3.1.NETFramework4.8

README

BigDecimal

BigDecimal is an arbitrary precision floating point number class.

Like other floating point number implementations, it stores a Mantissa and an Exponent. The difference is, these values are of type BigInteger, and so can be arbitrary precision.

If you just want the compiled binaries, just include it in your project as a nuget package, or extract the assembly from the nuget package (a .nupkg file is just a .zip file renamed): https://www.nuget.org/packages/ExtendedNumerics.BigDecimal

Example usage:

Console.WriteLine(BigDecimal.Precision);
// 5000
BigDecimal.Precision = 200; // Tone down the precision for this demo.
Console.WriteLine(BigDecimal.Precision);
// 200

BigDecimal goldenRatio = BigDecimal.Divide(BigDecimal.Add(BigDecimal.One, BigDecimal.Pow(5d, 0.5d)), BigDecimal.Parse("2"));
BigDecimal almostInteger = BigDecimal.Pow(goldenRatio, 23);
Console.WriteLine(almostInteger);
// 64079.000015605783843835009599722600391518338454771405992063505171997949372951472701529422358634915404757740005027416333594519349348824890921372720968246769717009339797514969003242216358994087504831741

Console.WriteLine(almostInteger.Mantissa);
// 64079000015605783843835009599722600391518338454771405992063505171997949372951472701529422358634915404757740005027416333594519349348824890921372720968246769717009339797514969003242216358994087504831741
Console.WriteLine(almostInteger.Exponent);
// -193

BigDecimal X = BigDecimal.Parse("0.000551876379690949227373068432671081677704194260485651214128035320088300220750");
Console.WriteLine(X);
// 0.00055187637969094922737306843267108167770419426048565121412803532008830022075

BigDecimal result = BigDecimal.Divide(BigDecimal.One, X);
Console.WriteLine(result);
// 1812.000000000000000000000000000000000000000000000000000000000000000000000001

Changes from Previous Version

No structural changes between v2022.187.2158 and v2022.346.2122.

Adoption Assessment

Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.

Compatibility metadata lists 4 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.