PgDecimal class final
Número decimal de precisão arbitrária, equivalente ao tipo numeric do
PostgreSQL (inclusive NaN, Infinity e -Infinity).
O valor é unscaledValue × 10^-scale. A escala (número de dígitos depois
da vírgula) é preservada como no PostgreSQL: PgDecimal.parse('1.50')
tem escala 2 e é impresso como 1.50, mas é igual (==) a 1.5.
As operações seguem o PostgreSQL:
+e-: escala do resultado = maior escala dos operandos;*: soma das escalas;/: a mesma escala que o PostgreSQL escolhe (pelo menos 16 dígitos significativos e não menos que a escala de cada operando), com arredondamento PgRoundingMode.halfAwayFromZero; divide permite escolher a escala e o arredondamento;~/e%: divisão inteira truncada e resto com o sinal do dividendo (dive%do PostgreSQL);NaNé igual aNaNe maior que qualquer outro valor (inclusiveInfinity), como na ordenação do PostgreSQL; operações comNaNresultam emNaN;Infinity - Infinitye0 * InfinitysãoNaN.
Divisão por zero lança UnsupportedError.
- Implemented types
Constructors
- PgDecimal.fromBigInt(BigInt unscaledValue, {int scale = 0})
-
unscaledValue × 10^-scale.scalenão pode ser negativa.factory - PgDecimal.fromDouble(double value)
-
O valor decimal mais curto que representa
value(o mesmo devalue.toString()):PgDecimal.fromDouble(0.1)é0.1.factory - PgDecimal.fromInt(int value)
-
Valor inteiro (escala 0).
factory
- PgDecimal.parse(String source)
-
Lê um número no formato de entrada do
numericdo PostgreSQL: sinal opcional, dígitos com ponto decimal opcional e expoente opcional (1.5e-3), ouNaN,Infinity,-Infinity,inf,-inf(maiúsculas ou minúsculas). Espaços nas pontas são ignorados.factory
Properties
- hashCode → int
-
The hash code for this object.
no setteroverride
- isFinite → bool
-
Se não é
NaNnem infinito.no setter - isInfinite → bool
-
Se é
Infinityou-Infinity.no setter - isNaN → bool
-
Se é
NaN.no setter - isNegative → bool
-
Se é menor que zero (inclusive
-Infinity).no setter - isZero → bool
-
Se é zero (com qualquer escala).
no setter
- postgresTypeName → String?
-
Nome do tipo usado no cast quando o valor é inserido no SQL (por exemplo
interval), ounullpara não fazer cast.no setteroverride - precision → int
-
Número de dígitos significativos (sem zeros à esquerda; zero → 1).
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- scale → int
-
Número de dígitos depois da vírgula (0 para valores não finitos).
no setter
- sign → int
-
-1, 0 ou 1 (
NaN→ 0).no setter - unscaledValue → BigInt
-
O valor sem a vírgula:
this == unscaledValue × 10^-scale.no setter
Methods
-
abs(
) → PgDecimal - Valor absoluto.
-
ceil(
) → PgDecimal - Menor inteiro maior ou igual a este valor (escala 0).
-
compareTo(
PgDecimal other) → int -
Compara como o PostgreSQL:
-Infinity< finitos <Infinity<NaN.override -
divide(
PgDecimal other, {required int scale, PgRoundingMode mode = PgRoundingMode.halfAwayFromZero}) → PgDecimal -
Divisão com
scaledígitos depois da vírgula, arredondada conformemode. -
floor(
) → PgDecimal - Maior inteiro menor ou igual a este valor (escala 0).
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
rescale(
int scale, [PgRoundingMode mode = PgRoundingMode.halfAwayFromZero]) → PgDecimal -
O valor com exatamente
scaledígitos depois da vírgula (ver round). -
round(
[int scale = 0, PgRoundingMode mode = PgRoundingMode.halfAwayFromZero]) → PgDecimal -
O valor arredondado para
scaledígitos depois da vírgula (comoround(x, scale)do PostgreSQL).scalepode ser negativa:round(-1)arredonda para dezenas e o resultado tem escala 0. A escala do resultado émax(scale, 0), mesmo que maior que a atual (round(1.5, 3)→1.500). Valores não finitos são devolvidos como estão. -
toBigInt(
) → BigInt - A parte inteira (truncada). Lança UnsupportedError para valores não finitos.
-
toDouble(
) → double - O valor como double (o mais próximo).
-
toInt(
) → int - A parte inteira (truncada). Lança UnsupportedError para valores não finitos ou fora da faixa de int.
-
toPostgresText(
) → String -
Texto aceito pela função de entrada do tipo no PostgreSQL.
override
-
toString(
) → String -
Texto no formato de saída do PostgreSQL: sem expoente e com exatamente
scale dígitos depois da vírgula (
NaN,Infinity,-Infinitypara os valores especiais).override -
truncate(
[int scale = 0]) → PgDecimal -
Como round, com PgRoundingMode.towardZero (
truncdo PostgreSQL).
Operators
-
operator %(
PgDecimal other) → PgDecimal -
Resto da divisão truncada, com o sinal do dividendo (
%do PostgreSQL). A escala é a maior dos operandos. -
operator *(
PgDecimal other) → PgDecimal -
operator +(
PgDecimal other) → PgDecimal -
operator -(
PgDecimal other) → PgDecimal -
operator /(
PgDecimal other) → PgDecimal - Divisão com a escala escolhida pelo PostgreSQL (ver a documentação da classe). Use divide para escolher a escala.
-
operator <(
PgDecimal other) → bool -
operator <=(
PgDecimal other) → bool -
operator ==(
Object other) → bool -
Igualdade numérica (
1.5 == 1.50);NaN == NaN, como no PostgreSQL.override -
operator >(
PgDecimal other) → bool -
operator >=(
PgDecimal other) → bool -
operator unary-(
) → PgDecimal -
operator ~/(
PgDecimal other) → PgDecimal -
Divisão inteira truncada em direção a zero (
divdo PostgreSQL).
Static Properties
Static Methods
-
tryParse(
String source) → PgDecimal? -
Como PgDecimal.parse, mas devolve
nullse o texto não for um número.