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.
Típusok, amelyek számokat tartalmaznak tizedesjegyekkel – float, double
Ezeket az adattípusokat gyakran lebegőpontos adattípusoknak nevezik. A számokra lebegőpontos számként hivatkozunk.
float fvar = 50,15; dupla dvar = 50,0;
Hasonlítsa össze a lebegőpontos adattípust – float és double
A float és a dupla adattípus közötti különbség a tizedesjegyek pontosságában rejlik.
A VexOS – ARM 7 specifikációjaalapján az úszó 6 vagy 7, a double pedig 15 vagy 16 helyet tud kezelni.
float: a jelenlegi V5os-ban úgy tűnik, hogy a vezérlő legfeljebb 8 tizedesjegy pontosságot tesz lehetővé.
például
float fvar1 = 1,12345670; float fvar2 = 1,12345678;
Az fval1 különbözik az fvar2-től,
vs
float fvar1 = 1,123456780; float fvar2 = 1,123456781;
Az fval1 ugyanúgy lesz kiértékelve, mint az fvar2.
double: 17 tizedesjegy pontosságot tesz lehetővé.
például
double dvar1 = 1,12345678912345678; dupla dvar2 = 1,12345678912345670;
a dval1 különbözik a dvar2-től,
vs
double dvar1 = 1,123456789123456789; dupla dvar2 = 1,123456789123456780;
A dval1 ugyanúgy lesz kiértékelve, mint a dvar2.
Ne használja a "kettőt", hacsak nincs szüksége nagy pontosságra
Két oka van annak, hogy ne használja a „dupla” kifejezést, hacsak nem nagy pontosságra van szüksége:
- 2X float típust foglal el.
- Sokkal nagyobb feldolgozási teljesítményt igényel.
A VexOS – ARM 7 specifikációjaalapján egy úszó 6 vagy 7, a dupla pedig 15 vagy 16 helyet tud. Egyik esetben sem szabad az utolsó számjegyek pontosságára hagyatkoznia a dupla vagy lebegő számok között. A tárolás nagyon eltér az „int” tárolásától, az úgynevezett „lebegőpontos számítás” miatt (amely kívül esik ennek a cikknek a hatókörén).
Így előfordulhat, hogy elveszítheti a pontosságot az utolsó néhány tizedesjegynél.
A duplán történő művelet meglehetősen költséges a lebegőpontos számításokhoz képest, és sokkal magasabb, mint az „egész szám”, az úgynevezett lebegőpontos számítások miatt.
Az IEEE szabvány alapján a következő megbízhatóbb tartományba esik.
| Írja be | A legkisebb pozitív érték | Legnagyobb pozitív érték | Pontosság száma |
|---|---|---|---|
| úszó | 10 -38 x 1,17549 | 10 38 x 3,40282 | 6 számjegy |
| kettős | 10 -308 vagy 2,22507 | 10 308 x 1,79769 | 15 számjegy |
Fel lehet cserélni a primitív adattípusokat? - Öntés
Lehetőség van adattípusok cseréjére. Ezt a technikát „öntésnek” nevezik. Bár az öntés meglehetősen általános gyakorlat, ezt csak akkor végezze, ha szükséges.
Az egyik leggyakoribb gyakorlat a char és az int cseréje.
Ennek az az oka, hogy mindkettő egész értékeket képvisel, egy kivétellel:
- Az "int" 4 bájtot tartalmaz (vagy 8 bájtot egyes fordítóprogramokban)
- A „char” csak 1 bájtot tartalmaz.
Tehát pl
char aVal = 100; int iVal = aVal; // implicit öntés
vagy
int iVal = (char) aVal; // explicit casting.
Figyelmeztetés az implicit csonkolásra:
például
Egy másik gyakori gyakorlat az int és a float cseréje
float fVal = 5,486; float frakció = fVal - (int)fVal; //megteszi: 5,486 - 5
Figyelmeztetés az implicit csonkolásra:
például
int iVal = 50; float fVal = iVal / 100;
most fVal = 0,0, NEM 0,5.
Teljesen rendben van, ha kihasználjuk az implicit csonkolást, amely bizonyos forgatókönyvekben gyakran a műveletek fontos része. Azonban meg kell győződnie arról, hogy ezt a technikát tervezve alkalmazza.
Ha nem szeretné, hogy implicit csonkítás történjen, akkor explicit öntést kell végrehajtania:
- implicit öntés:
float fVal = iVal / 100,0; - explicit öntés:
float fVal = (float) iVal / 100