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.