ktsu.SignificantNumber 1.4.4

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package ktsu.SignificantNumber --version 1.4.4
                    
NuGet\Install-Package ktsu.SignificantNumber -Version 1.4.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ktsu.SignificantNumber" Version="1.4.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ktsu.SignificantNumber" Version="1.4.4" />
                    
Directory.Packages.props
<PackageReference Include="ktsu.SignificantNumber" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ktsu.SignificantNumber --version 1.4.4
                    
#r "nuget: ktsu.SignificantNumber, 1.4.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ktsu.SignificantNumber@1.4.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ktsu.SignificantNumber&version=1.4.4
                    
Install as a Cake Addin
#tool nuget:?package=ktsu.SignificantNumber&version=1.4.4
                    
Install as a Cake Tool

ktsu.SignificantNumber

NuGet Version NuGet Version GitHub commit activity GitHub branch status

The SignificantNumber class represents a number with a significand and an exponent, enabling high-precision arithmetic operations that comply with calculation rules for significant figures. It provides a robust set of functionalities for mathematical computations and formatting.

Features

  • High-precision arithmetic operations (addition, subtraction, multiplication, division)
  • Support for significant figures and exponents
  • Integration with .NET numerical interfaces
  • Comprehensive error handling and validation

Table of Contents

Installation

To install the SignificantNumber library, you can use the .NET CLI:

dotnet add package ktsu.SignificantNumber

Or, add the package reference directly in your project file:

<PackageReference Include="ktsu.SignificantNumber" Version="x.x.x" />

Usage

Creating a SignificantNumber

You can create a SignificantNumber from various numeric types using the ToSignificantNumber extension method:

Supported Numeric Types

The SignificantNumber class supports a wide range of numeric types through the ToSignificantNumber extension method, leveraging the INumber interface for conversions. The following types are supported:

  • Integer Types:

    • int
    • long
    • short
    • sbyte
    • uint
    • ulong
    • ushort
    • byte
    • BigInteger
  • Floating-Point Types:

    • double
    • float
    • Half
    • decimal

Examples

You can convert various numeric types to SignificantNumber using the ToSignificantNumber extension method:

using ktsu.SignificantNumber;

// Integer types
int intValue = 12345;
SignificantNumber significantNumberFromInt = intValue.ToSignificantNumber();

BigInteger bigIntValue = new BigInteger(9876543210);
SignificantNumber significantNumberFromBigInt = bigIntValue.ToSignificantNumber();

// Floating-point types
double doubleValue = 123.45;
SignificantNumber significantNumberFromDouble = doubleValue.ToSignificantNumber();

Half halfValue = (Half)123.45;
SignificantNumber significantNumberFromHalf = halfValue.ToSignificantNumber();

float floatValue = 123.45f;
SignificantNumber significantNumberFromFloat = floatValue.ToSignificantNumber();

decimal decimalValue = 123.45m;
SignificantNumber significantNumberFromDecimal = decimalValue.ToSignificantNumber();

Arithmetic Operations

You can perform various arithmetic operations on SignificantNumber instances:

var result1 = number1 + number2;
var result2 = number1 - number2;
var result3 = number1 * number2;
var result4 = number1 / number2;

// Square and cube operations
var squared = number1.Squared();
var cubed = number1.Cubed();

// Power operation
var powerResult = number1.Pow(3); // number1 raised to the power of 3

Comparison Operations

You can compare SignificantNumber instances using comparison operators:

bool isEqual = number1 == number2;
bool isGreater = number1 > number2;
bool isLessOrEqual = number1 <= number2;

Formatting and Parsing

You can format a SignificantNumber as a string:

string formatted = number1.ToString("G", CultureInfo.InvariantCulture);
Console.WriteLine(formatted);  // Outputs the formatted number

Parsing is not supported and will throw NotSupportedException:

try
{
    var parsedNumber = SignificantNumber.Parse("123.45", CultureInfo.InvariantCulture);
}
catch (NotSupportedException ex)
{
    Console.WriteLine(ex.Message);
}

Instead, you should parse the number as another numeric type and convert it to a SignificantNumber:

double parsedDouble = double.Parse("123.45", CultureInfo.InvariantCulture);
SignificantNumber significantNumberFromDouble = parsedDouble.ToSignificantNumber();

Extension Methods

ToSignificantNumber

Converts various numeric types to a SignificantNumber.

Usage
public static SignificantNumber ToSignificantNumber<TInput>(this INumber<TInput> input)
    where TInput : INumber<TInput>
Parameters
  • input: The input number to convert.
Returns
  • SignificantNumber: The converted SignificantNumber.
Example
double floatingPointValue = 123.45;
SignificantNumber significantNumberFromFloat = floatingPointValue.ToSignificantNumber();

int integerValue = 12345;
SignificantNumber significantNumberFromInt = integerValue.ToSignificantNumber();

SignificantNumber result = significantNumberFromFloat + significantNumberFromInt;
// result = 12468.45

Conversion

To<TOutput>

Converts a SignificantNumber to the specified numeric type.

Usage
public TOutput To<TOutput>()
    where TOutput : INumber<TOutput>
Parameters
  • None
Returns
  • TOutput: The converted value of the SignificantNumber.
Example
SignificantNumber significantNumber = new SignificantNumber(3, 12345); // 12345e3
double result = significantNumber.To<double>();
Console.WriteLine(result);  // Outputs 12345000

Precision

The SignificantNumber class is designed to handle high-precision arithmetic operations with significant figures and exponents.

Here's how it ensures precision:

Significand and Exponent

A SignificantNumber consists of two main components:

  • Significand: This is the significant part of the number, stored as a BigInteger to accommodate a wide range of values with high precision.
  • Exponent: This is the exponent part of the number, which scales the significand by a power of ten.

Precision Handling

  • Maximum Significant Digits: When converting from a floating-point number to a SignificantNumber maximum number of significant digits is limited to 7 for float values, and 16 for double values.
  • Trailing Zero Removal: The class automatically sanitizes the significand by removing trailing zeros, ensuring that the number is stored in its most compact and precise form.
  • Rounding: You can round a SignificantNumber to a specified number of decimal digits, ensuring that you can control the precision of your calculations.

Example of Precision

Consider the number 123.456000:

  • When stored as a SignificantNumber, it will be represented as 123456e-3 after removing the trailing zeros and adjusting the exponent accordingly.
  • This ensures that the number is represented with the exact precision required for your calculations, without unnecessary trailing zeros.

By using the SignificantNumber class, you can perform high-precision arithmetic operations and maintain control over the significant figures and exponent, ensuring accurate and efficient mathematical computations.

API Reference

Properties

  • static SignificantNumber NegativeOne - Gets the value -1 for the type.
  • static SignificantNumber One - Gets the value 1 for the type.
  • static SignificantNumber Zero - Gets the value 0 for the type.
  • static int Radix - Gets the radix, or base, for the type.
  • static SignificantNumber AdditiveIdentity - Gets the additive identity of the current type.
  • static SignificantNumber MultiplicativeIdentity - Gets the multiplicative identity of the current type.

Methods

  • bool Equals(SignificantNumber other) - Determines whether the specified object is equal to the current object.
  • int CompareTo(object? obj) - Compares the current instance with another object.
  • int CompareTo(SignificantNumber other) - Compares the current instance with another significant number.
  • int CompareTo<TInput>(TInput other) where TInput : INumber<TInput> - Compares the current instance with another number.
  • SignificantNumber Abs() - Returns the absolute value of the current instance.
  • SignificantNumber Round(int decimalDigits) - Rounds the current instance to the specified number of decimal digits.
  • SignificantNumber Clamp<TNumber>(TNumber min, TNumber max) where TNumber : INumber<TNumber> - Clamps the specified value between the minimum and maximum values.
  • string ToString(string? format, IFormatProvider? formatProvider) - Converts the current instance to its equivalent string representation using the specified format and format provider.
  • bool TryFormat(Span<char> destination, out int charsWritten, ReadOnlySpan<char> format, IFormatProvider? provider) - Attempts to format the current instance into the provided span.
  • TOutput To<TOutput>() where TOutput : INumber<TOutput> - Converts the current significant number to the specified numeric type.

Static Methods

  • static SignificantNumber Abs(SignificantNumber value) - Returns the absolute value of a SignificantNumber.
  • static bool IsCanonical(SignificantNumber value) - Determines whether the specified value is canonical.
  • static bool IsComplexNumber(SignificantNumber value) - Determines whether the specified value is a complex number.
  • static bool IsEvenInteger(SignificantNumber value) - Determines whether the specified value is an even integer.
  • static bool IsFinite(SignificantNumber value) - Determines whether the specified value is finite.
  • static bool IsImaginaryNumber(SignificantNumber value) - Determines whether the specified value is an imaginary number.
  • static bool IsInfinity(SignificantNumber value) - Determines whether the specified value is infinite.
  • static bool IsInteger(SignificantNumber value) - Determines whether the specified value is an integer.
  • static bool IsNaN(SignificantNumber value) - Determines whether the specified value is NaN.
  • static bool IsNegative(SignificantNumber value) - Determines whether the specified value is negative.
  • static bool IsNegativeInfinity(SignificantNumber value) - Determines whether the specified value is negative infinity.
  • static bool IsNormal(SignificantNumber value) - Determines whether the specified value is normal.
  • static bool IsOddInteger(SignificantNumber value) - Determines whether the specified value is an odd integer.
  • static bool IsPositive(SignificantNumber value) - Determines whether the specified value is positive.
  • static bool IsPositiveInfinity(SignificantNumber value) - Determines whether the specified value is positive infinity.
  • static bool IsRealNumber(SignificantNumber value) - Determines whether the specified value is a real number.
  • static bool IsSubnormal(SignificantNumber value) - Determines whether the specified value is subnormal.
  • static bool IsZero(SignificantNumber value) - Determines whether the specified value is zero.
  • static SignificantNumber MaxMagnitude(SignificantNumber x, SignificantNumber y) - Returns the larger of the magnitudes of two significant numbers.
  • static SignificantNumber MaxMagnitudeNumber(SignificantNumber x, SignificantNumber y) - Returns the larger of the magnitudes of two significant numbers.
  • static SignificantNumber MinMagnitude(SignificantNumber x, SignificantNumber y) - Returns the smaller of the magnitudes of two significant numbers.
  • static SignificantNumber MinMagnitudeNumber(SignificantNumber x, SignificantNumber y) - Returns the smaller of the magnitudes of two significant numbers.

Operators

  • static SignificantNumber operator -(SignificantNumber value) - Negates a significant number.
  • static SignificantNumber operator -(SignificantNumber left, SignificantNumber right) - Subtracts one significant number from another.
  • static bool operator !=(SignificantNumber left, SignificantNumber right) - Determines whether two significant numbers are not equal.
  • static SignificantNumber operator *(SignificantNumber left, SignificantNumber right) - Multiplies two significant numbers.
  • static SignificantNumber operator /(SignificantNumber left, SignificantNumber right) - Divides one significant number by another.
  • static SignificantNumber operator +(SignificantNumber value) - Returns the unary plus of a significant number.
  • static SignificantNumber operator +(SignificantNumber left, SignificantNumber right) - Adds two significant numbers.
  • static bool operator ==(SignificantNumber left, SignificantNumber right) - Determines whether two significant numbers are equal.
  • static bool operator >(SignificantNumber left, SignificantNumber right) - Determines whether one significant number is greater than another.
  • static bool operator <(SignificantNumber left, SignificantNumber right) - Determines whether one significant number is less than another.
  • static bool operator >=(SignificantNumber left, SignificantNumber right) - Determines whether one significant number is greater than or equal to another.
  • static bool operator <=(SignificantNumber left, SignificantNumber right) - Determines whether one significant number is less than or equal to another.

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ktsu.SignificantNumber:

Package Downloads
ktsu.PhysicalQuantity

Physical Quantity

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.4.11 0 6/29/2026
1.4.10 39 6/28/2026
1.4.9 40 6/28/2026
1.4.9-pre.1 76 2/17/2026
1.4.8 216 2/16/2026
1.4.8-pre.1 77 2/16/2026
1.4.7 120 2/14/2026
1.4.6 121 2/14/2026
1.4.6-pre.8 78 2/6/2026
1.4.6-pre.7 74 2/5/2026
1.4.6-pre.6 78 2/3/2026
1.4.6-pre.5 81 2/3/2026
1.4.6-pre.4 90 2/1/2026
1.4.6-pre.3 76 1/31/2026
1.4.6-pre.2 80 1/31/2026
1.4.6-pre.1 76 1/31/2026
1.4.5 130 1/30/2026
1.4.4 155 1/28/2026
1.4.4-pre.4 181 11/24/2025
1.4.4-pre.3 159 11/23/2025
Loading failed

## v1.4.4 (patch)

Changes since v1.4.3:

- Update package references, target framework, and improve test assertions ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.4-pre.4 (prerelease)

Changes since v1.4.4-pre.3:

- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.4-pre.3 (prerelease)

Changes since v1.4.4-pre.2:

- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.4-pre.2 (prerelease)

Changes since v1.4.4-pre.1:

- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.4-pre.1 (prerelease)

Changes since v1.4.3:

- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.3 (patch)

Changes since v1.4.2:

- Update sdk ([@matt-edmondson](https://github.com/matt-edmondson))
- Update .editorconfig, .gitignore, .gitattributes, .mailmap, .runsettings, and PSBuild.psm1 for improved configurations and cleanup ([@matt-edmondson](https://github.com/matt-edmondson))
- Update sdk ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.2 (patch)

Changes since v1.4.1:

- Update ktsu.PreciseNumber package reference to version 1.7.1 ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.2-pre.17 (prerelease)

Changes since v1.4.2-pre.16:

- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.2-pre.16 (prerelease)

Changes since v1.4.2-pre.15:

- Sync .runsettings ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitattributes ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .gitignore ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.2-pre.15 (prerelease)

Changes since v1.4.2-pre.14:
## v1.4.2-pre.14 (prerelease)

Changes since v1.4.2-pre.13:
## v1.4.2-pre.13 (prerelease)

Changes since v1.4.2-pre.12:
## v1.4.2-pre.12 (prerelease)

Changes since v1.4.2-pre.11:
## v1.4.2-pre.11 (prerelease)

Changes since v1.4.2-pre.10:
## v1.4.2-pre.10 (prerelease)

Changes since v1.4.2-pre.9:
## v1.4.2-pre.9 (prerelease)

Changes since v1.4.2-pre.8:
## v1.4.2-pre.8 (prerelease)

Changes since v1.4.2-pre.7:
## v1.4.2-pre.7 (prerelease)

Changes since v1.4.2-pre.6:
## v1.4.2-pre.6 (prerelease)

Changes since v1.4.2-pre.5:
## v1.4.2-pre.5 (prerelease)

Changes since v1.4.2-pre.4:
## v1.4.2-pre.4 (prerelease)

Changes since v1.4.2-pre.3:
## v1.4.2-pre.3 (prerelease)

Changes since v1.4.2-pre.2:
## v1.4.2-pre.2 (prerelease)

Changes since v1.4.2-pre.1:
## v1.4.2-pre.1 (prerelease)

Incremental prerelease update.
## v1.4.1 (patch)

Changes since v1.4.0:

- Update README and project files for SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove obsolete build configuration files and update SignificantNumber class for improved variable declarations and copyright information. ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.1-pre.1 (prerelease)

Incremental prerelease update.
## v1.4.0 (minor)

Changes since v1.3.0:

- Add constructor for SignificantNumber from PreciseNumber ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.3.1-pre.1 (prerelease)

Changes since v1.3.0:
## v1.3.0 (minor)

Changes since v1.2.7:

- Renamed metadata files ([@matt-edmondson](https://github.com/matt-edmondson))
- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor SignificantNumber tests and implementation ([@matt-edmondson](https://github.com/matt-edmondson))
- Inherit from precise number ([@matt-edmondson](https://github.com/matt-edmondson))
- Update packages ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata management and versioning ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.7 (patch)

Changes since v1.2.6:

- Bump MSTest.TestFramework from 3.6.3 to 3.6.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.6 (patch)

Changes since v1.2.5:

- Bump MSTest.TestAdapter from 3.6.3 to 3.6.4 ([@dependabot[bot]](https://github.com/dependabot[bot]))
## v1.2.5 (patch)

Changes since v1.2.4:

- Sync Directory.Build.targets ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.2.4 (patch)

Changes since v1.2.3:

- Add package references for ILCompiler and ILLink.Tasks in test project ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.3 (patch)

Changes since v1.2.2:

- Add test project and new test cases for ToSignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Add MakeCommonized method call for significand comparison ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.2 (patch)

Changes since v1.2.1:

- Fix SignificantNumber handling of zero significand ([@matt-edmondson](https://github.com/matt-edmondson))
- Remove culture-specific tests from AITests.cs ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.1 (minor)

Changes since v1.1.0:

- Fix Incorrect Exponent Handling for Integers in SignificantNumber Conversion ([@matt-edmondson](https://github.com/matt-edmondson))
- update changelist ([@matt-edmondson](https://github.com/matt-edmondson))
- Version 1.1.4 ([@matt-edmondson](https://github.com/matt-edmondson))
- Optimize `Round` method and add rounding tests ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated changelog, description, and version ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance Pow and Exp in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Update version to 1.1.1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor SignificantNumber handling and formatting ([@matt-edmondson](https://github.com/matt-edmondson))
- Refine division logic in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- update version to 1.2.0 ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix typos ([@matt-edmondson](https://github.com/matt-edmondson))
- Add unit tests for Exp method in AITests.cs ([@matt-edmondson](https://github.com/matt-edmondson))
- Update changelog ([@matt-edmondson](https://github.com/matt-edmondson))
- Optimize To<TOutput>() ([@matt-edmondson](https://github.com/matt-edmondson))
- Version 1.2.1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Update version to 1.1.2 ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor and expand SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.1.0 (major)

- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactored testing methods and removed `TestMaxDecimalPlaces` ([@matt-edmondson](https://github.com/matt-edmondson))
- Add a test to validate we dont support Half values ([@matt-edmondson](https://github.com/matt-edmondson))
- Changed access modifier for TryCreate<TInput> method ([@matt-edmondson](https://github.com/matt-edmondson))
- Added comprehensive test suite for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation to SignificantNumberExtensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Extend SignificantNumber struct with new static methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor UnaryPlus and remove UnaryNegation ([@matt-edmondson](https://github.com/matt-edmondson))
- Add tests for Add and Subtract methods in SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `SignificantNumber` struct and remove code smells ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new tests and updated code analysis suppression ([@matt-edmondson](https://github.com/matt-edmondson))
- Removed MinDecimalPlaces from SignificantNumber struct ([@matt-edmondson](https://github.com/matt-edmondson))
- Added unit tests for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- INumber implementation ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Replaced `ToString()` with `TryFormat` and stack allocated spans ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber class and tests ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new test methods for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix an issue where -1 was not being given special case precision like 1 and 0 ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated Helpers.cs, refactored InvalidNumber.cs, and simplified Tests.cs ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix an issue when formatting to string for negative numbers ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Add additional tests for string formatting ([@matt-edmondson](https://github.com/matt-edmondson))
- Added `To<TOutput>` method to `SignificantNumber` ([@matt-edmondson](https://github.com/matt-edmondson))
- Add round trip testing ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor SignificantNumber initialization and parsing methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Added CA5394 to NoWarn for test projects ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated assertion methods and added new utility methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated `integerComponent` creation logic for null character handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Add Squared, Cubed, and Pow methods ([@matt-edmondson](https://github.com/matt-edmondson))
- `Added ComVisible attribute` ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new test method in `Tests` class ([@matt-edmondson](https://github.com/matt-edmondson))
- Version 1.0.1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace some unreachable exceptions with asserts ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated README and SignificantNumber class description ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated error handling and refactored `SignificantNumber` struct ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated `ToSignificantNumber<TInput>` method ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated and added extensive tests in AITests class ([@matt-edmondson](https://github.com/matt-edmondson))
- Added InvalidNumber class for testing the exceptions in the SignificantNumberExtensions class ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new tests on random numbers of each supported type ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `Radix` to use `BinaryRadix` constant ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor and clean up `Tests.cs` file ([@matt-edmondson](https://github.com/matt-edmondson))
- Assert that stringified inputs should be in exponential form ([@matt-edmondson](https://github.com/matt-edmondson))
- Change exception for ++ operator in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated data collector format in `test.runsettings` ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber.cs and related test cases ([@matt-edmondson](https://github.com/matt-edmondson))
- Added CLSCompliant attribute and imported namespaces ([@matt-edmondson](https://github.com/matt-edmondson))
- Introduce constant `ten` to replace literal `10` ([@matt-edmondson](https://github.com/matt-edmondson))
- 1.0.0-alpha.2 ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial version ([@matt-edmondson](https://github.com/matt-edmondson))
- Switch to a generic extension method for creating new instances ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new operator tests for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace Codecov badge with Sonar in README ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated software version to 1.0.0 ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation comments ([@matt-edmondson](https://github.com/matt-edmondson))
- Add extra constness and null checks ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `SignificantNumber` struct and add new methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Introduced constant in SignificantNumber.cs for readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `ToSignificantNumber<TInput>` method in `SignificantNumberExtensions` ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README with new sections and examples ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated build properties and modified warning handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Added and updated test cases, removed redundant test ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber class and added new methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated README.md with detailed `SignificantNumber` class info ([@matt-edmondson](https://github.com/matt-edmondson))
- Update SignificantNumber struct and operator overloads ([@matt-edmondson](https://github.com/matt-edmondson))
- `Removed test.runsettings file from .NET project` ([@matt-edmondson](https://github.com/matt-edmondson))
- Add additional test coverage ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `InvalidNumber` class and update using statements ([@matt-edmondson](https://github.com/matt-edmondson))
- Sort members ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new test methods to Tests class ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README and package references to ktsu.io.SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Moved a ToString overload to sit with teh rest of them ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix a missing sign formatting negative numbers ([@matt-edmondson](https://github.com/matt-edmondson))