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.
Tyypit, joissa on desimaalilukuja – float, double
Näitä tietotyyppejä kutsutaan usein liukulukutietotyypeiksi. Numeroita kutsutaan liukulukuluvuiksi.
float fvar = 50,15; kaksoisdvar = 50,0;
Vertaa liukulukutietotyyppiä – float ja double
Ero kelluvan ja kaksoistietotyypin välillä on kyse desimaalien tarkkuudesta.
VexOS – ARM 7 -spesifikaatioonperustuen kelluva pystyy käsittelemään 6 tai 7 paikkaa ja double 15 tai 16 paikkaa.
float: nykyisessä V5:ssä ohjain näyttää sallivan jopa 8 desimaalin tarkkuuden.
esim
kelluva fvar1 = 1,12345670; kelluva fvar2 = 1,12345678;
fval1 on eri kuin fvar2,
vs
kelluva fvar1 = 1,123456780; kelluva fvar2 = 1,123456781;
fval1 arvioidaan samalla tavalla kuin fvar2.
double: mahdollistaa jopa 17 desimaalin tarkkuuden.
esim
double dvar1 = 1,12345678912345678; double dvar2 = 1,12345678912345670;
dval1 on eri kuin dvar2,
vs
double dvar1 = 1,123456789123456789; double dvar2 = 1,123456789123456780;
dval1 arvioidaan samalla tavalla kuin dvar2.
Älä käytä "kaksinkertaista", ellet tarvitse suurta tarkkuutta
On kaksi syytä, miksi sinun ei pitäisi käyttää "kaksinkertaista", ellet tarvitse suurta tarkkuutta:
- Se kestää 2X float-tyypin.
- Se vie paljon enemmän prosessointitehoa.
VexOS – ARM 7 -spesifikaatioonperustuen kelluke voi tehdä 6 tai 7 paikkaa ja tupla 15 tai 16 paikkaa. Kummassakaan tapauksessa sinun ei pitäisi luottaa tupla- tai float-numeroiden viimeisten numeroiden tarkkuuteen. Se tallennetaan hyvin eri tavalla kuin "int":n tallentaminen johtuen "liukulukulaskunnasta" (joka ei kuulu tämän artikkelin soveltamisalaan).
Näin ollen saatat menettää tarkkuuden muutaman viimeisen desimaalin kohdalla.
Kaksoiskäyttö on melko kallista verrattuna float-toimintoon ja paljon suurempi kuin "kokonaisluku" johtuen niin kutsutusta liukulukulaskunnasta.
IEEE-standardin perusteella seuraava on luotettavammalla alueella.
Tyyppi | Pienin positiivinen arvo | Suurin positiivinen arvo | Tarkkuus # |
kellua | 10 -38 x 1,17549 | 10 38 x 3,40282 | 6 numeroa |
kaksinkertainen | 10 -308 tai 2.22507 | 10 308 x 1,79769 | 15 numeroa |
Voitko vaihtaa primitiivisiä tietotyyppejä? - Casting
Tietotyyppejä on mahdollista vaihtaa keskenään. Tätä tekniikkaa kutsutaan "valuksi". Vaikka valu on melko yleinen käytäntö, tee se vain, jos se on välttämätöntä.
Yksi yleisimmistä käytännöistä on vaihtaa char ja int.
Tämä johtuu siitä, että ne molemmat edustavat kokonaislukuja yhtä poikkeusta lukuun ottamatta:
- "int" sisältää 4 tavua (tai 8 tavua jossain kääntäjässä)
- "char" sisältää vain 1 tavun.
Eli esim
char aVal = 100; int iVal = aVal; // implisiittinen valu
tai
int iVal = (char) aVal; // eksplisiittinen casting.
Varoitus implisiittistä katkaisua varten:
esim
Toinen yleinen käytäntö on vaihtaa int ja float
float fVal = 5,486; float-fraktio = fVal - (int)fVal; //se tekee: 5.486 - 5
Varoitus implisiittistä katkaisua varten:
esim
int iVal = 50; float fVal = iVal / 100;
nyt fVal = 0,0, EI 0,5.
On aivan hienoa hyödyntää implisiittistä katkaisua, joka on joissakin skenaarioissa usein tärkeä osa toimintaa. Sinun on kuitenkin varmistettava, että käytät tätä tekniikkaa suunnittelun mukaan.
Jos et halua implisiittistä katkaisua, sinun on suoritettava eksplisiittinen valu:
- implisiittinen valu:
float fVal = iVal / 100,0;
- eksplisiittinen heitto:
float fVal = (float) iVal / 100