Numeriska datatyper (Visual Basic)
Visual Basic tillhandahåller flera numeriska datatyper för att hantera tal i olika representationer. Integraltyper representerar endast heltal (positiva, negativa och noll) och icke-inintegrala typer representerar tal med både heltal och bråkdelar.
En tabell som visar en jämförelse sida vid sida av Visual Basic-datatyperna finns i Datatyper.
Integral numeriska typer
Integraldatatyper är de som endast representerar tal utan bråkdelar.
De signerade integraldatatyperna är SByte Data Type (8-bitars), Short Data Type (16-bitars), Integer Data Type (32-bitars) och Long Data Type (64-bitars). Om en variabel alltid lagrar heltal i stället för bråktal deklarerar du det som en av dessa typer.
De osignerade integraltyperna är Byte Data Type (8-bitars), UShort Data Type (16-bitars), UInteger Data Type (32-bitars) och ULong Data Type (64-bitars). Om en variabel innehåller binära data eller data av okänd karaktär deklarerar du den som en av dessa typer.
Prestanda
Aritmetiska åtgärder är snabbare med integraltyper än med andra datatyper. De är snabbast med typerna Integer
och UInteger
i Visual Basic.
Stora heltal
Om du behöver ha ett heltal som är större än vad Integer
datatypen kan innehålla kan du använda Long
datatypen i stället. Long
variabler kan innehålla tal från -9 223 372 036 854 775 808 till 9 223 372 036 854 775 807. Åtgärder med Long
är något långsammare än med Integer
.
Om du behöver ännu större värden kan du använda decimaldatatypen. Du kan lagra tal från -79 228 162 514 264 337 593 543 950 335 till 79 228 162 514 264 337 593 543 950 335 i en Decimal
variabel om du inte använder några decimaler. Åtgärder med Decimal
tal är dock betydligt långsammare än med någon annan numerisk datatyp.
Små heltal
Om du inte behöver hela datatypens intervall Integer
kan du använda Short
datatypen, som kan innehålla heltal från -32 768 till 32 767. För det minsta heltalsintervallet SByte
innehåller datatypen heltal från -128 till 127. Om du har ett mycket stort antal variabler som innehåller små heltal kan den vanliga språkkörningen ibland lagra dina Short
variabler och SByte
variabler mer effektivt och spara minnesförbrukning. Åtgärder med Short
och SByte
är dock något långsammare än med Integer
.
Osignerade heltal
Om du vet att variabeln aldrig behöver innehålla ett negativt tal kan du använda de osignerade typerna Byte
, UShort
UInteger
, och .ULong
Var och en av dessa datatyper kan innehålla ett positivt heltal dubbelt så stort som motsvarande signerade typ (SByte
, , Short
Integer
och Long
). När det gäller prestanda är varje osignerad typ exakt lika effektiv som motsvarande signerade typ. I synnerhet UInteger
delar med Integer
skillnaden att vara den mest effektiva av alla elementära numeriska datatyper.
Icke-inintegrala numeriska typer
Icke-inintegrala datatyper är de som representerar tal med både heltal och bråkdelar.
De icke-inintegrala numeriska datatyperna är Decimal
(128-bitars fast punkt), Enkel datatyp (32-bitars flyttal) och Dubbel datatyp (64-bitars flyttals). De är alla signerade typer. Om en variabel kan innehålla ett bråk deklarerar du den som en av dessa typer.
Decimal
är inte en flyttalsdatatyp. Decimal
tal har ett binärt heltalsvärde och en heltalsskalningsfaktor som anger vilken del av värdet som är ett decimaltal.
Du kan använda Decimal
variabler för penningvärden. Fördelen är värdenas precision. Datatypen Double
är snabbare och kräver mindre minne, men det kan uppstå avrundningsfel. Datatypen Decimal
behåller fullständig noggrannhet till 28 decimaler.
Flyttal (Single
och Double
) tal har större intervall än Decimal
tal, men kan bli föremål för avrundningsfel. Flyttalstyper stöder färre signifikanta siffror än Decimal
men kan representera värden med större omfattning.
Icke-inintegrala talvärden kan uttryckas som mmmEeee, där mmm är mantissa (de signifikanta siffrorna) och eee är exponenten (en effekt på 10). De högsta positiva värdena för de ickeintegrala typerna är 7.9228162514264337593543950335E+28 för Decimal
, 3.4028235E+38 för Single
och 1.79769313486231570E+308 för Double
.
Prestanda
Double
är den mest effektiva av bråkdatatyperna, eftersom processorerna på de aktuella plattformarna utför flyttalsåtgärder med dubbel precision. Åtgärder med Double
är dock inte lika snabba som med de integrerade typerna, till Integer
exempel .
Små magnituder
För tal med minsta möjliga storlek (närmast 0) Double
kan variabler innehålla tal så små som -4,94065645841246544E-324 för negativa värden och 4,94065645841246544E-324 för positiva värden.
Små bråktal
Om du inte behöver hela datatypens intervall Double
kan du använda Single
datatypen, som kan innehålla flyttalsnummer från -3.4028235E+38 till 3.4028235E+38. De minsta magnituderna för Single
variabler är -1,401298E-45 för negativa värden och 1,401298E-45 för positiva värden. Om du har ett mycket stort antal variabler som innehåller små flyttalsnummer kan den vanliga språkkörningen ibland lagra variablerna Single
mer effektivt och spara minnesförbrukning.