Compartilhar via


Tipos de dados numéricos (Visual Basic)

O Visual Basic fornece vários tipos de dados numéricos para lidar com números em várias representações. Os tipos integrais representam apenas números inteiros (positivo, negativo e zero) e os tipos não integrais representam números com partes de inteiros e fracionárias.

Para obter uma tabela mostrando uma comparação lado a lado dos tipos de dados do Visual Basic, consulte Tipos de Dados.

Tipos Numéricos Integrais

Tipos de dados integrais são aqueles que representam apenas números sem partes fracionárias.

Os tipos de dados integrais assinados são Tipo de Dados SByte (8 bits), Tipo de Dados Curtos (16 bits), Tipo de Dados Inteiros (32 bits) e Tipo de Dados Longos (64 bits). Se uma variável sempre armazenar inteiros em vez de números fracionários, declare-a como um desses tipos.

Os tipos integrais não assinados são Tipo de Dados de Byte (8 bits), Tipo de Dados UShort (16 bits), Tipo de Dados UInteger (32 bits) e Tipo de Dados ULong (64 bits). Se uma variável contiver dados binários ou dados de natureza desconhecida, declare-os como um desses tipos.

Desempenho

As operações aritméticas são mais rápidas com tipos de dados integrais do que com outros tipos de dados. Elas são mais rápidas com os tipos e Integer no UInteger Visual Basic.

Inteiros Grandes

Se você precisar manter um inteiro maior do que o tipo de dados Integer pode conter, você poderá usar o tipo de dados Long. As variáveis Long podem conter números de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. As operações com Long são ligeiramente mais lentas do que as com Integer.

Se você precisar de valores ainda maiores, poderá usar o Tipo de Dados Decimais. Você pode conter números de -79.228.162.514.264.337.593.543.950.335 a 79,228.162.514.264.337.593.543.950.335 em uma variável Decimal se você não usar casas decimais. No entanto, as operações com números Decimal são consideravelmente mais lentas do que com qualquer outro tipo de dados numérico.

Inteiros Pequenos

Se você não precisar do intervalo completo do tipo de dados Integer, poderá usar o tipo de dados Short, que pode conter inteiros de -32.768 a 32.767. Para o menor intervalo inteiro, o tipo de dados SByte contém inteiros de -128 a 127. Se você tiver um número muito grande de variáveis que contêm números inteiros pequenos, o Common Language Runtime às vezes pode armazenar suas variáveis Short e SByte de maneira mais eficiente e economizar o consumo de memória. No entanto, as operações com Short e SByte são um pouco mais lentas do que as com Integer.

Inteiros sem Sinal

Se você souber que sua variável nunca precisa conter um número negativo, você pode usar os tipos não assinadosByte, UShort, UInteger e ULong. Cada um desses tipos de dados pode conter um inteiro positivo duas vezes maior que o tipo assinado correspondente dele (SByte, Short, Integer e Long). Em termos de desempenho, cada tipo não assinado é exatamente tão eficiente quanto o tipo assinado correspondente dele. Em particular, UInteger compartilha com Integer a distinção de ser o mais eficiente de todos os tipos de dados numéricos elementares.

Tipos Numéricos não Integrais

Tipos de dados não integrais são aqueles que representam números com partes de inteiros e fracionárias.

Os tipos de dados numéricos não integrais são Decimal (ponto fixo de 128 bits), Tipo de Dados Únicos (ponto flutuante de 32 bits) e Tipo de Dados Duplos (ponto flutuante de 64 bits). Todos eles são tipos assinados. Se uma variável puder conter uma fração, declare-a como um desses tipos.

Decimal não é um tipo de dados de ponto flutuante. Decimal os números têm um valor inteiro binário e um fator de dimensionamento inteiro que especifica qual parte do valor é uma fração decimal.

Você pode usar variáveis Decimal para valores de dinheiro. A vantagem é a precisão dos valores. O tipo de dados Double é mais rápido e requer menos memória, mas está sujeito a erros de arredondamento. O tipo de dados Decimal retém a precisão completa para 28 casas decimais.

Os números de ponto flutuante (Single e Double) têm intervalos maiores que os números Decimal, mas podem estar sujeitos a erros de arredondamento. Os tipos de ponto flutuante dão suporte a menos dígitos significativos do que Decimal, mas podem representar valores de maior magnitude.

Os valores de número não integrais podem ser expressos como mmmEeee, no qual mmm é a mantissa (os dígitos significativos) e eee é o expoente (uma potência de 10). Os valores positivos mais altos dos tipos não integrais são 7,922816251426437593543950335E+28 para Decimal, 3,4028235E+38 para Single e 1,79769313486231570E+308 para Double.

Desempenho

Double é o mais eficiente dos tipos de dados fracionários, pois os processadores nas plataformas atuais executam operações de ponto flutuante com precisão dupla. No entanto, as operações com Double não são tão rápidas quanto com os tipos integrais, como Integer.

Pequenas Magnitudes

Para números com a menor magnitude possível (mais próxima de 0), as variáveis Double podem conter números tão pequenos quanto -4,94065645841246544E-324 para valores negativos e 4,94065645841246544E-324 para valores positivos.

Números Fracionários Pequenos

Se você não precisar do intervalo completo do tipo de dados Double, poderá usar o tipo de dados Single, que pode conter números de ponto flutuante de -3,4028235E+38 a 3,4028235E+38. As menores magnitudes para variáveis Single são -1,401298E-45 para valores negativos e 1,401298E-45 para valores positivos. Se você tiver um número muito grande de variáveis que contêm números de ponto flutuante pequenos, o Common Language Runtime às vezes pode armazenar suas variáveis Single de maneira mais eficiente e economizar o consumo de memória.

Confira também