Lebegő és kettős változók létrehozása a VEXcode Pro V5-ben

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:

  1. 2X float típust foglal el.
  2. 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

A V5 robotikai rendszer programozási jellemzőit szemléltető diagram, kiemelve a hatékony robotprogramozás kulcsfontosságú összetevőit és csatlakozásait.

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

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: