Compartilhar via


Tipo de dados decimal (Visual Basic)

As assinados 128 bits (16 bytes) que representam números inteiros de 96 bits (12 bytes) dimensionados por uma potência de 10 variável. O fator de escala especifica o número de dígitos à direita do ponto decimal; varia de 0 a 28. Com uma escala de 0 (nenhuma casa decimal), o valor possível maior é +/-0.0000000000000000000000000001 (-79.228.162.514.264.337.593.543.950.335 +/-7.9228162514264337593543950335E+28). Com 28 casas decimais, o maior valor é +/-7.9228162514264337593543950335, e o menor valor diferente de zero é +/-0.0000000000000000000000000001 (+/-1e-28).

Comentários

O tipo de dados Decimal fornece o maior número de dígitos significativos para um número. Ele oferece suporte para até 29 dígitos significativos e pode representar valores além de 7.9228 x 10^28. Ele é particularmente adequado para cálculos, como financeiros, que exigem um grande número de dígitos mas não podem tolerar erros de arredondamento.

O valor padrão para Decimal é 0.

Dicas de Programação

  • Precisão. Decimal não é um tipo de dados de ponto flutuante. A estrutura Decimal mantém um valor inteiro binário, junto com um bit de sinal e um número inteiro de fator de escala que especifica qual parte do valor é uma fração decimal. Devido a isso, números Decimal têm uma representação mais precisa na memória que tipos de ponto flutuante (Single e Double).

  • Desempenho. O tipo de dados de Decimal é mais lento de todos os tipos numéricos. Você deve avaliar a importância da precisão contra o desempenho antes de escolher um tipo de dados.

  • Ampliação. O tipo de dados de Decimal amplia a Single ou a Double. Isto significa que você pode converter um Decimal para qualquer um desses tipos sem a ocorrência de um erro OverflowException.

  • Zeros à direita. Visual Basic não armazena zeros à direita em um literal de Decimal . No entanto, uma variável Decimal preserva os zeros à direita adquiridos computacionalmente. O exemplo a seguir ilustra isto:

    Dim d1, d2, d3, d4 As Decimal
    d1 = 2.375D
    d2 = 1.625D
    d3 = d1 + d2
    d4 = 4.000D
    MsgBox("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) &
          ", d3 = " & CStr(d3) & ", d4 = " & CStr(d4))
    

    A saída de MsgBox no exemplo anterior é da seguinte maneira:

    d1 = 2.375, d2 = 1.625, d3 = 4.000, d4 = 4

  • Caracteres de Tipo. Acrescentar o caractere de tipo literal D a um literal força ao tipo de dados de Decimal . Acrescentar o caractere de tipo identificador @ a qualquer identificador o força a Decimal.

  • Tipo de Framework. O tipo correspondente no .NET Framework é a estrutura de Decimal .

Intervalo

Talvez seja necessário usar o caractere de tipo D para atribuir um valor grande para uma variável ou constante Decimal. Esse requisito é porque o compilador interpreta um literal como Long a menos que um caractere de tipo literal seguir o literal, como mostra o exemplo a seguir.

Dim bigDec1 As Decimal = 9223372036854775807   ' No overflow.
Dim bigDec2 As Decimal = 9223372036854775808   ' Overflow.
Dim bigDec3 As Decimal = 9223372036854775808D  ' No overflow.

A declaração para bigDec1 não produz um overflow porque o valor que é atribuído está dentro do intervalo para Long. O valor de Long pode ser atribuído à variável de Decimal .

A declaração para bigDec2 gera um erro de overflow porque o valor que é atribuído é muito grande para Long. Porque o literal numérico primeiro não pode ser interpretado como Long, não pode ser atribuído à variável de Decimal .

Para bigDec3, o caractere de tipo literal D resolve o problema forçando o compilador para interpretar o literal como Decimal em vez de como Long.

Consulte também

Referência

Resumo do tipo de dados (Visual Basic)

Decimal

Decimal.#ctor

Tipo de dados único (Visual Basic)

Tipo de dados double (Visual Basic)

Funções de conversão do tipo (Visual Basic)

Resumo da conversão (Visual Basic)

Math.Round

Conceitos

Uso eficiente de tipos de dados (Visual Basic)