Decimal class final

A finite base-ten value, independent of binary floating point.

Equal values have identical normalized coefficients and scales. The range matches finite unconstrained PostgreSQL NUMERIC: at most 131072 integer digits and 16383 fractional digits. This does not retain display precision.

Implemented types

Constructors

Decimal.fromBigInt(BigInt coefficient, {int scale = 0})
Creates coefficient × 10^(-scale), normalizing trailing zeroes.
factory
Decimal.fromFraction(BigInt numerator, BigInt denominator, {required int scale, DecimalRounding rounding = DecimalRounding.exact})
Converts an integer fraction to a finite decimal at an explicit scale. Only the rounded result must fit the finite Decimal range.
factory
Decimal.parse(String source)
Parses finite decimal text, including scientific notation.
factory

Properties

coefficient BigInt
Normalized integer significand, without trailing decimal zeroes.
final
hashCode int
The hash code for this object.
no setteroverride
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scale int
Decimal exponent divisor: the value equals coefficient × 10^(-scale).
final

Methods

compareTo(Decimal other) int
Compares this object to another object.
override
constrained(int precision, int scale) Decimal
PostgreSQL-style column coercion: round ties away from zero, then check precision. Expression result codecs do not inherit column constraints.
divide(Decimal other, {required int scale, DecimalRounding rounding = DecimalRounding.exact}) Decimal
Divides to scale fractional digits (negative scales round integer digits). The default rejects a result requiring rounding, including repeating ratios.
fits(int precision, int scale) bool
Whether the value already fits a NUMERIC column without rounding.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
rounded(int scale, {DecimalRounding rounding = DecimalRounding.exact}) Decimal
Rounds to an explicit scale; the default rejects lost precision.
toString() String
A string representation of this object.
override

Operators

operator *(Decimal other) Decimal
Multiplies exactly and checks the supported result range.
operator +(Decimal other) Decimal
Adds two exact values and checks the supported result range.
operator -(Decimal other) Decimal
Subtracts other without rounding.
operator <(Decimal other) bool
Compares exact numeric values, independent of their stored scale.
operator <=(Decimal other) bool
Whether this exact value is less than or equal to other.
operator ==(Object other) bool
The equality operator.
override
operator >(Decimal other) bool
Whether this exact value is greater than other.
operator >=(Decimal other) bool
Whether this exact value is greater than or equal to other.
operator unary-() Decimal
Returns the exact additive inverse.

Static Properties

zero Decimal
The canonical normalized zero.
final

Static Methods

tryParse(String source) Decimal?
Parses finite decimal text, returning null for invalid or out-of-range input.
validateDigits(int precision, int scale) → void
Validates PostgreSQL-style column precision and scale declarations.
validateScale(int scale) → void
Throws RangeError if a result scale exceeds the supported finite range.

Constants

maxFractionDigits → const int
Maximum count of digits to the right of the decimal point.
maxIntegerDigits → const int
Maximum count of digits to the left of the decimal point.