The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.
VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.
Typen die getallen met decimalen bevatten – zwevend, dubbel
Deze gegevenstypen worden vaak drijvende-kommagegevenstypen genoemd. De getallen worden drijvende-kommagetallen genoemd.
vlotter fvar = 50,15; dubbele dvar = 50,0;
Vergelijk het gegevenstype met drijvende komma – zwevend en dubbel
Het verschil tussen een float- en een double-gegevenstype heeft alles te maken met de precisie op het aantal decimalen.
Gebaseerd op de VexOS – ARM 7-specificatie, kan float 6 of 7 plaatsen aan, en double 15 of 16.
float: in de huidige V5os lijkt de controller een precisie tot 8 decimalen toe te staan.
bijv
vlotter fvar1 = 1,12345670; vlotter fvar2 = 1,12345678;
fval1 is het verschil met fvar2,
versus
vlotter fvar1 = 1,123456780; vlotter fvar2 = 1,123456781;
fval1 wordt op dezelfde manier geëvalueerd als fvar2.
dubbel: maakt tot 17 decimalen nauwkeurig.
bijv
dubbele dvar1 = 1,12345678912345678; dubbele dvar2 = 1,12345678912345670;
dval1 verschilt van dvar2,
versus
dubbele dvar1 = 1,123456789123456789; dubbele dvar2 = 1,123456789123456780;
dval1 wordt op dezelfde manier geëvalueerd als dvar2.
Gebruik "dubbel" niet, tenzij u hoge nauwkeurigheid nodig heeft
Er zijn twee redenen waarom u "dubbel" niet zou moeten gebruiken, tenzij u hoge nauwkeurigheid nodig heeft:
- Het neemt het 2X float-type in beslag.
- Het kost veel meer verwerkingskracht.
Gebaseerd op de VexOS – ARM 7-specificatie, kan een praalwagen 6 of 7 plaatsen aan, en een dubbelganger 15 of 16. In beide gevallen moet u niet vertrouwen op de nauwkeurigheid van de laatste cijfers in dubbel of zwevend. Het wordt heel anders opgeslagen dan het opslaan van een “int” vanwege iets dat “float-point berekening” wordt genoemd (wat buiten het bestek van dit artikel valt).
Het is dus mogelijk dat u de nauwkeurigheid op de laatste paar decimalen verliest.
Het gebruik van dubbel is behoorlijk kostbaar in vergelijking met float, en veel hoger dan 'integer' vanwege iets dat drijvende-kommaberekeningen wordt genoemd.
Gebaseerd op de IEEE-standaard ligt het volgende binnen een betrouwbaarder bereik.
Type | Kleinste positieve waarde | Grootste positieve waarde | # van precisie |
vlot | 10 -38 x 1.17549 | 10 38 x 3.40282 | 6 cijfers |
dubbele | 10 -308 of 2,22507 | 10 308 x 1.79769 | 15 cijfers |
Kun je primitieve gegevenstypen uitwisselen? - Gieten
Het is mogelijk om gegevenstypen uit te wisselen. Deze techniek wordt ‘gieten’ genoemd. Hoewel casten een vrij gebruikelijke praktijk is, mag u dat alleen doen als het nodig is.
Een van de meest voorkomende praktijken is het uitwisselen van char en int.
Dit komt omdat ze allebei gehele waarden vertegenwoordigen, met één uitzondering:
- “int” bevat 4 bytes (of 8 bytes in sommige compilers)
- “char” bevat slechts 1 byte.
Dus, bijv
char aVal = 100; int iVal = aVal; // impliciete casting
of
int iVal = (char) aVal; // expliciete casting.
Let op voor impliciete afkapping:
bijv
Een andere veel voorkomende praktijk is het uitwisselen van int en float
vlotter fVal = 5,486; vlotterfractie = fVal - (int)fVal; // dat doet het: 5.486 - 5
Let op voor impliciete afkapping:
bijv
int iVal = 50; vlotter fVal = iVal / 100;
nu fVal = 0,0, NIET 0,5.
Het is absoluut prima om te profiteren van impliciete afkapping, wat in sommige scenario's vaak een belangrijk onderdeel van de bedrijfsvoering is. U moet er echter voor zorgen dat u deze techniek opzettelijk gebruikt.
Als u niet wilt dat impliciete truncatie plaatsvindt, moet u expliciete casting uitvoeren:
- impliciete casting:
float fVal = iVal / 100,0;
- expliciete casting:
float fVal = (float) iVal / 100