Slankiųjų ir dvigubų kintamųjų kūrimas VEXcode Pro V5

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.

Tipai, kuriuose laikomi skaičiai su kablelio skaičiais – float, double

Šie duomenų tipai dažnai vadinami slankiojo kablelio duomenų tipais. Skaičiai vadinami slankiojo kablelio skaičiais.

plūdės fvar = 50,15;
dvigubas dvar = 50,0;

Palyginkite slankiojo kablelio duomenų tipą – float ir double

Skirtumas tarp slankaus ir dvigubo duomenų tipo priklauso nuo kablelio tikslumo.

Remiantis VexOS – ARM 7 specifikacija, plūdė gali užimti 6 arba 7 vietas, o dviguba – 15 arba 16.

float: dabartiniame V5OS valdiklis leidžia iki 8 tikslumo po kablelio.

pvz

float fvar1 = 1,12345670;
float fvar2 = 1,12345678;

fval1 skiriasi nuo fvar2,

prieš

float fvar1 = 1,123456780; 
float fvar2 = 1,123456781;

fval1 bus įvertintas taip pat kaip fvar2.

double: leidžia nustatyti iki 17 skaitmenų po kablelio.

pvz

dvigubas dvar1 = 1,12345678912345678;
dvigubas dvar2 = 1,12345678912345670;

dval1 skiriasi nuo dvar2,

prieš

dvigubas dvar1 = 1,123456789123456789;
dvigubas dvar2 = 1,123456789123456780;

dval1 bus įvertintas taip pat kaip dvar2.


Nenaudokite „dvigubo“, nebent jums reikia didelio tikslumo

Yra dvi priežastys, kodėl neturėtumėte naudoti „dvigubo“, nebent jums reikia didelio tikslumo:

  1. Jis užima 2X plūdės tipo.
  2. Tai užima daug didesnę apdorojimo galią.

Remiantis VexOS – ARM 7 specifikacija, plūdė gali užimti 6 arba 7 vietas, o dviguba – 15 arba 16. Bet kuriuo atveju neturėtumėte pasikliauti paskutinių dvigubų arba plūduriuojančių skaitmenų tikslumu. Jis saugomas labai skirtingai nei „int“ dėl vadinamojo „slankiojo taško skaičiavimo“ (tai nepatenka į šio straipsnio taikymo sritį).

Taigi, jūs galite prarasti tikslumą ties paskutiniais skaičiais po kablelio.

Veikimas dvigubu režimu yra gana brangus, palyginti su plūduriuojančiu skaičiumi, ir daug didesnis nei „sveikasis skaičius“ dėl vadinamųjų slankiojo kablelio skaičiavimų.

Remiantis IEEE standartu, toliau nurodytas patikimesnis diapazonas.

Tipas Mažiausia teigiama vertė Didžiausia teigiama vertė Tikslumo #
plūdė 10 -38 x 1,17549 10 38 x 3,40282 6 skaitmenys
dvigubai 10 -308 arba 2.22507 10 308 x 1,79769 15 skaitmenų

Ar galite pakeisti primityvius duomenų tipus? - Liejimas

Galima keistis duomenų tipais. Ši technika vadinama „liejimu“. Nors liejimas yra gana įprasta praktika, darykite tai tik tada, kai tai būtina. 

Viena iš labiausiai paplitusių praktikų yra keistis char ir int.

Taip yra todėl, kad jie abu reiškia sveikąsias reikšmes su viena išimtimi: 

  • „int“ yra 4 baitai (arba 8 baitai kai kuriuose kompiliatoriuose)
  • „char“ yra tik 1 baitas.

Taigi, pvz

char aVal = 100;
int iVal = aVal; // numanomas liejimas

arba

int iVal = (char) aVal; // aiškus liejimas.

Atsargiai dėl numanomo sutrumpinimo:

pvz

codesnippet3.png

Kita įprasta praktika yra mainai int ir float
plūdės fVal = 5,486;
plūduriuojanti frakcija = fVal – (int)fVal; //tai: 5.486–5

Atsargiai dėl numanomo sutrumpinimo:

pvz

int iVal = 50;
float fVal = iVal / 100;

dabar fVal = 0,0, NE 0,5.

Visiškai gerai pasinaudoti numanomu sutrumpinimo pranašumais, kuris kai kuriais atvejais dažnai yra svarbi operacijų dalis. Tačiau jūs turite įsitikinti, kad naudojate šią techniką pagal dizainą.

Jei nenorite, kad būtų numanomas sutrumpinimas, turite atlikti aiškų liejimą:

  • numanomas liejimas: float fVal = iVal / 100,0;
  • aiškus liejimas: float fVal = (plūdė) iVal / 100

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

Last Updated: