ktsu.SignificantNumber
1.4.8
Prefix Reserved
See the version list below for details.
dotnet add package ktsu.SignificantNumber --version 1.4.8
NuGet\Install-Package ktsu.SignificantNumber -Version 1.4.8
<PackageReference Include="ktsu.SignificantNumber" Version="1.4.8" />
<PackageVersion Include="ktsu.SignificantNumber" Version="1.4.8" />
<PackageReference Include="ktsu.SignificantNumber" />
paket add ktsu.SignificantNumber --version 1.4.8
#r "nuget: ktsu.SignificantNumber, 1.4.8"
#:package ktsu.SignificantNumber@1.4.8
#addin nuget:?package=ktsu.SignificantNumber&version=1.4.8
#tool nuget:?package=ktsu.SignificantNumber&version=1.4.8
ktsu.SignificantNumber
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:
intlongshortsbyteuintulongushortbyteBigInteger
Floating-Point Types:
doublefloatHalfdecimal
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 convertedSignificantNumber.
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 theSignificantNumber.
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
BigIntegerto 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
SignificantNumbermaximum number of significant digits is limited to 7 forfloatvalues, and 16 fordoublevalues. - 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
SignificantNumberto 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 as123456e-3after 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 aSignificantNumber.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 | Versions 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. |
-
net10.0
- ktsu.PreciseNumber (>= 1.7.2)
- Polyfill (>= 9.7.6)
-
net7.0
- ktsu.PreciseNumber (>= 1.7.2)
- Polyfill (>= 9.7.6)
-
net8.0
- ktsu.PreciseNumber (>= 1.7.2)
- Polyfill (>= 9.7.6)
-
net9.0
- ktsu.PreciseNumber (>= 1.7.2)
- Polyfill (>= 9.7.6)
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.9-pre.1 | 55 | 2/17/2026 |
| 1.4.8 | 99 | 2/16/2026 |
| 1.4.8-pre.1 | 53 | 2/16/2026 |
| 1.4.7 | 94 | 2/14/2026 |
| 1.4.6 | 95 | 2/14/2026 |
| 1.4.6-pre.8 | 55 | 2/6/2026 |
| 1.4.6-pre.7 | 56 | 2/5/2026 |
| 1.4.6-pre.6 | 59 | 2/3/2026 |
| 1.4.6-pre.5 | 61 | 2/3/2026 |
| 1.4.6-pre.4 | 68 | 2/1/2026 |
| 1.4.6-pre.3 | 57 | 1/31/2026 |
| 1.4.6-pre.2 | 61 | 1/31/2026 |
| 1.4.6-pre.1 | 57 | 1/31/2026 |
| 1.4.5 | 106 | 1/30/2026 |
| 1.4.4 | 132 | 1/28/2026 |
| 1.4.4-pre.4 | 164 | 11/24/2025 |
| 1.4.4-pre.3 | 143 | 11/23/2025 |
| 1.4.4-pre.2 | 118 | 11/23/2025 |
| 1.4.4-pre.1 | 128 | 11/23/2025 |
| 1.4.3 | 223 | 9/3/2025 |
## v1.4.8 (patch)
Changes since v1.4.7:
- 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]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.8-pre.1 (prerelease)
Changes since v1.4.7:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.7 (patch)
Changes since v1.4.6:
- Remove legacy build scripts ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.6 (patch)
Changes since v1.4.5:
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
- 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 global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.8 (prerelease)
Changes since v1.4.6-pre.7:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.7 (prerelease)
Changes since v1.4.6-pre.6:
- Sync scripts\update-winget-manifests.ps1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.6 (prerelease)
Changes since v1.4.6-pre.5:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.5 (prerelease)
Changes since v1.4.6-pre.4:
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.4 (prerelease)
Changes since v1.4.6-pre.3:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.3 (prerelease)
Changes since v1.4.6-pre.2:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync global.json ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.2 (prerelease)
Changes since v1.4.6-pre.1:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync COPYRIGHT.md ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.6-pre.1 (prerelease)
No significant changes detected since v1.4.6.
## v1.4.5 (patch)
Changes since v1.4.4:
- Remove .github\workflows\project.yml ([@matt-edmondson](https://github.com/matt-edmondson))
## 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 scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .github\workflows\dotnet.yml ([@ktsu[bot]](https://github.com/ktsu[bot]))
## v1.4.4-pre.1 (prerelease)
No significant changes detected since v1.4.4.
## v1.4.3 (patch)
Changes since v1.4.2:
- Update sdk ([@matt-edmondson](https://github.com/matt-edmondson))
- 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))
## 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:
- Merge remote-tracking branch 'refs/remotes/origin/main' ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@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]))
- Sync .mailmap ([@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 scripts\PSBuild.psm1 ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .editorconfig ([@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]))
- Sync .mailmap ([@ktsu[bot]](https://github.com/ktsu[bot]))
- Sync .runsettings ([@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)
No significant changes detected since v1.4.2.
## v1.4.1 (patch)
Changes since v1.4.0:
- Remove obsolete build configuration files and update SignificantNumber class for improved variable declarations and copyright information. ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README and project files for SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.4.1-pre.1 (prerelease)
No significant changes detected since v1.4.1.
## v1.4.0 (minor)
Changes since v1.3.0:
- Add constructor for SignificantNumber from PreciseNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Update ktsu.PreciseNumber package version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.3.1-pre.1 (prerelease)
Changes since v1.3.0:
- Update ktsu.PreciseNumber package version ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.3.0 (minor)
Changes since v1.2.7:
- Refactor SignificantNumber tests and implementation ([@matt-edmondson](https://github.com/matt-edmondson))
- Merge branch 'precise-number' into precise-number-merge ([@matt-edmondson](https://github.com/matt-edmondson))
- Add LICENSE template ([@matt-edmondson](https://github.com/matt-edmondson))
- Update packages ([@matt-edmondson](https://github.com/matt-edmondson))
- Apply new editorconfig ([@matt-edmondson](https://github.com/matt-edmondson))
- Inherit from precise number ([@matt-edmondson](https://github.com/matt-edmondson))
- Add automation scripts for metadata management and versioning ([@matt-edmondson](https://github.com/matt-edmondson))
- Renamed metadata files ([@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 MakeCommonized method call for significand comparison ([@matt-edmondson](https://github.com/matt-edmondson))
- Add test project and new test cases for ToSignificantNumber ([@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))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Migrate to ktsu namespace ([@matt-edmondson](https://github.com/matt-edmondson))
## v1.2.1 (minor)
Changes since v1.1.0:
- Version 1.2.1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Enhance Pow and Exp in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- update changelist ([@matt-edmondson](https://github.com/matt-edmondson))
- Add unit tests for Exp method in AITests.cs ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor SignificantNumber handling and formatting ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix typos ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor and expand SignificantNumber ([@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))
- Refine division logic in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix Incorrect Exponent Handling for Integers in SignificantNumber Conversion ([@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))
## v1.1.0 (major)
- Add Squared, Cubed, and Pow methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Version 1.0.1 ([@matt-edmondson](https://github.com/matt-edmondson))
- Added `To<TOutput>` method to `SignificantNumber` ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README and package references to ktsu.io.SignificantNumber ([@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))
- Updated README and SignificantNumber class description ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README with new sections and examples ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated README.md with detailed `SignificantNumber` class info ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactored testing methods and removed `TestMaxDecimalPlaces` ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor SignificantNumber initialization and parsing methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Removed MinDecimalPlaces from SignificantNumber struct ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation to SignificantNumberExtensions ([@matt-edmondson](https://github.com/matt-edmondson))
- Added CA5394 to NoWarn for test projects ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated Helpers.cs, refactored InvalidNumber.cs, and simplified Tests.cs ([@matt-edmondson](https://github.com/matt-edmondson))
- Add documentation comments ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new test method in `Tests` class ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor and clean up `Tests.cs` file ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated and added extensive tests in AITests class ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated build properties and modified warning handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber class and added new methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber class and tests ([@matt-edmondson](https://github.com/matt-edmondson))
- Added comprehensive test suite for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new operator tests for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new test methods for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated `integerComponent` creation logic for null character handling ([@matt-edmondson](https://github.com/matt-edmondson))
- Add tests for Add and Subtract methods in SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new test methods to Tests class ([@matt-edmondson](https://github.com/matt-edmondson))
- Added unit tests for SignificantNumber class ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `SignificantNumber` struct and add new methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Added new tests and updated code analysis suppression ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `InvalidNumber` class and update using statements ([@matt-edmondson](https://github.com/matt-edmondson))
- Changed access modifier for TryCreate<TInput> method ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated error handling and refactored `SignificantNumber` struct ([@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))
- Refactor `ToSignificantNumber<TInput>` method in `SignificantNumberExtensions` ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated assertion methods and added new utility methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Added and updated test cases, removed redundant test ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor UnaryPlus and remove UnaryNegation ([@matt-edmondson](https://github.com/matt-edmondson))
- Extend SignificantNumber struct with new static methods ([@matt-edmondson](https://github.com/matt-edmondson))
- Introduced constant in SignificantNumber.cs for readability ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated `ToSignificantNumber<TInput>` method ([@matt-edmondson](https://github.com/matt-edmondson))
- Change exception for ++ operator in SignificantNumber ([@matt-edmondson](https://github.com/matt-edmondson))
- Update SignificantNumber struct and operator overloads ([@matt-edmondson](https://github.com/matt-edmondson))
- Replaced `ToString()` with `TryFormat` and stack allocated spans ([@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))
- Refactor `SignificantNumber` struct and remove code smells ([@matt-edmondson](https://github.com/matt-edmondson))
- Refactor `Radix` to use `BinaryRadix` constant ([@matt-edmondson](https://github.com/matt-edmondson))
- Introduce constant `ten` to replace literal `10` ([@matt-edmondson](https://github.com/matt-edmondson))
- `Added ComVisible attribute` ([@matt-edmondson](https://github.com/matt-edmondson))
- Added CLSCompliant attribute and imported namespaces ([@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))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- `Removed test.runsettings file from .NET project` ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated data collector format in `test.runsettings` ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Updated SignificantNumber.cs and related test cases ([@matt-edmondson](https://github.com/matt-edmondson))
- INumber implementation ([@matt-edmondson](https://github.com/matt-edmondson))
- Sort members ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- 1.0.0-alpha.2 ([@matt-edmondson](https://github.com/matt-edmondson))
- Assert that stringified inputs should be in exponential form ([@matt-edmondson](https://github.com/matt-edmondson))
- Add a test to validate we dont support Half values ([@matt-edmondson](https://github.com/matt-edmondson))
- Add round trip testing ([@matt-edmondson](https://github.com/matt-edmondson))
- Add new tests on random numbers of each supported type ([@matt-edmondson](https://github.com/matt-edmondson))
- Switch to a generic extension method for creating new instances ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix a missing sign formatting negative numbers ([@matt-edmondson](https://github.com/matt-edmondson))
- Add extra constness and null checks ([@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))
- Add additional tests for string formatting ([@matt-edmondson](https://github.com/matt-edmondson))
- Fix an issue when formatting to string for negative numbers ([@matt-edmondson](https://github.com/matt-edmondson))
- Add additional test coverage ([@matt-edmondson](https://github.com/matt-edmondson))
- Replace some unreachable exceptions with asserts ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial version ([@matt-edmondson](https://github.com/matt-edmondson))
- Update dotnet.yml ([@matt-edmondson](https://github.com/matt-edmondson))
- Update DESCRIPTION ([@matt-edmondson](https://github.com/matt-edmondson))
- Update README.md ([@matt-edmondson](https://github.com/matt-edmondson))
- Update VERSION ([@matt-edmondson](https://github.com/matt-edmondson))
- Initial commit ([@matt-edmondson](https://github.com/matt-edmondson))