Tipos de dados numéricos (Visual Basic)
Visual Basic fornece vários tipos de dados numéricos para manipular números em várias representações. Os tipos integrais representam apenas números inteiros (positivos, negativos e zero), e os tipos não integrais representam números com partes inteiras 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
Os tipos de dados integrais são aqueles que representam apenas números sem partes fracionárias.
Os tipos de dados integrais assinados são SByte Data Type (8 bits), Short Data Type (16 bits), Integer Data Type (32 bits) e Long Data Type (64 bits). Se uma variável sempre armazena números inteiros em vez de números fracionários, declare-a como um desses tipos.
Os tipos integrais não assinados são Byte Data Type (8 bits), UShort Data Type (16 bits), UInteger Data Type (32 bits) e ULong Data Type (64 bits). Se uma variável contiver dados binários ou dados de natureza desconhecida, declare-a como um desses tipos.
Desempenho
As operações aritméticas são mais rápidas com tipos integrais do que com outros tipos de dados. Eles são mais rápidos com o Integer
e UInteger
tipos no Visual Basic.
Inteiros grandes
Se você precisar manter um número inteiro maior do que o Integer
tipo de dados pode conter, você pode usar o Long
tipo de dados. Long
As variáveis 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 com Integer
.
Se precisar de valores ainda maiores, você pode usar o Tipo de Dados Decimais. Você pode manter 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 Decimal
variável se você não usar nenhuma casa decimal. No entanto, as operações com Decimal
números são consideravelmente mais lentas do que com qualquer outro tipo de dados numéricos.
Números inteiros pequenos
Se você não precisar do intervalo completo do tipo de dados, poderá usar o Short
tipo de Integer
dados, que pode conter números inteiros de -32.768 a 32.767. Para o menor intervalo de inteiros, o SByte
tipo de dados 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 Short
variáveis e SByte
de forma mais eficiente e economizar consumo de memória. No entanto, as operações com Short
e SByte
são um pouco mais lentas do que com Integer
.
Inteiros não assinados
Se você sabe que sua variável nunca precisa conter um número negativo, você pode usar os tiposByte
não assinados, UShort
, UInteger
, e ULong
. Cada um desses tipos de dados pode conter um inteiro positivo duas vezes maior do que seu tipo assinado correspondente (SByte
, Short
, Integer
, e Long
). Em termos de desempenho, cada tipo não assinado é exatamente tão eficiente quanto seu tipo assinado correspondente. 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
Os tipos de dados não integrais são aqueles que representam números com partes inteiras e fracionárias.
Os tipos de dados numéricos não integrais são Decimal
(ponto fixo de 128 bits), Tipo de dados único (ponto flutuante de 32 bits) e Tipo de dados duplos (ponto flutuante de 64 bits). São todos 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 escala inteira que especifica qual parte do valor é uma fração decimal.
Você pode usar Decimal
variáveis para valores monetários. A vantagem é a precisão dos valores. O Double
tipo de dados é mais rápido e requer menos memória, mas está sujeito a erros de arredondamento. O Decimal
tipo de dados mantém a precisão total até 28 casas decimais.
Os números de vírgula flutuante (Single
e Double
) têm intervalos maiores do que Decimal
os números, mas podem estar sujeitos a erros de arredondamento. Os tipos de vírgula flutuante suportam menos dígitos significativos do que Decimal
, mas podem representar valores de maior magnitude.
Os valores numéricos não integrais podem ser expressos como mmmEeee, em que mmm é a mantissa (os dígitos significativos) e eee é o expoente (uma potência de 10). Os maiores valores positivos dos tipos não integrais são 7,9228162514264337593543950335E+28 para , 3,4028235E+38 para Decimal
Single
, e 1,79769313486231570E+308 para Double
.
Desempenho
Double
é o mais eficiente dos tipos de dados fracionários, porque 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), Double
as variáveis podem conter números tão pequenos quanto -4,94065645841246544E-324 para valores negativos e 4,94065645841246544E-324 para valores positivos.
Pequenos números fracionários
Se você não precisar do intervalo completo do tipo de dados, poderá usar o tipo de Double
dados, que pode conter números de vírgula Single
flutuante de -3,4028235E+38 a 3,4028235E+38. As menores magnitudes para Single
as variáveis 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 pequenos números de vírgula flutuante, o Common Language Runtime às vezes pode armazenar suas Single
variáveis de forma mais eficiente e economizar consumo de memória.