Vytváření plovoucích a dvojitých proměnných ve 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.

Typy, které obsahují čísla s desetinnými místy – float, double

Tyto datové typy se často nazývají datové typy s pohyblivou řádovou čárkou. Čísla se označují jako čísla s plovoucí desetinnou čárkou.

float fvar = 50,15;
double dvar = 50,0;

Porovnejte datový typ s plovoucí desetinnou čárkou – float a double

Rozdíl mezi datovým typem float a double spočívá v přesnosti počtu desetinných míst.

Na základě specifikace VexOS – ARM 7, float zvládne 6 nebo 7 míst a double zvládne 15 nebo 16.

float: v aktuálním V5os se zdá, že ovladač umožňuje přesnost až na 8 desetinných míst.

např

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

fval1 se liší od fvar2,

vs

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

fval1 bude vyhodnocen stejně jako fvar2.

double: umožňuje přesnost až na 17 desetinných míst.

např

dvojitý dvar1 = 1,12345678912345678;
double dvar2 = 1,12345678912345670;

dval1 se liší od dvar2,

vs

dvojitý dvar1 = 1,123456789123456789;
double dvar2 = 1,123456789123456780;

dval1 bude vyhodnocen stejně jako dvar2.


Nepoužívejte "double", pokud nepotřebujete vysokou přesnost

Existují dva důvody, proč byste neměli používat „double“, pokud nepotřebujete vysokou přesnost:

  1. Zabírá 2X plovoucí typ.
  2. Zabírá mnohem vyšší výpočetní výkon.

Na základě specifikace VexOS – ARM 7může plovák udělat 6 nebo 7 míst a dvojitý 15 nebo 16. V žádném případě byste se neměli spoléhat na přesnost posledních číslic v double nebo float. Ukládá se velmi odlišně od ukládání „int“ kvůli něčemu, co se nazývá „výpočet s plovoucí desetinnou čárkou“ (což je mimo rozsah tohoto článku).

Můžete tedy ztratit přesnost na posledních několika desetinných místech.

Operace na double je ve srovnání s floatingem poměrně nákladná a mnohem vyšší než „integer“ kvůli něčemu, čemu se říká výpočty s plovoucí desetinnou čárkou.

Na základě standardu IEEE je ve spolehlivějším rozsahu následující.

Typ Nejmenší kladná hodnota Největší kladná hodnota # přesnosti
plovák x 1,17549 10 38 x 3,40282 6 číslic
dvojnásobek 10 -308 nebo 2,22507 10 308 x 1,79769 15 číslic

Můžete si vyměňovat primitivní datové typy? - Casting

Je možné vyměňovat datové typy. Tato technika se nazývá „casting“. I když je casting poměrně běžnou praxí, dělejte to, pouze pokud je to nutné. 

Jednou z nejběžnějších praktik je výměna char a int.

Je to proto, že oba představují celočíselné hodnoty s jednou výjimkou: 

  • „int“ obsahuje 4 bajty (nebo 8 bajtů v některých kompilátorech)
  • „char“ obsahuje pouze 1 bajt.

Takže např

char aVal = 100;
int iVal = aVal; // implicitní casting

nebo

int iVal = (char) aVal; // explicitní casting.

Upozornění na implicitní zkrácení:

např

Diagram znázorňující programovací funkce robotického systému V5, zdůrazňující klíčové komponenty a připojení pro efektivní programování robota.

Další běžnou praxí je výměna int a float
float fVal = 5,486;
float zlomek = fVal - (int)fVal; //to platí: 5,486 - 5

Upozornění na implicitní zkrácení:

např

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

nyní fVal = 0,0, NE 0,5.

Je naprosto v pořádku využít výhody implicitního zkrácení, které je v některých scénářích často důležitou součástí operací. Musíte se však ujistit, že tuto techniku ​​používáte záměrně.

Pokud si nepřejete, aby docházelo k implicitnímu zkrácení, musíte provést explicitní přetypování:

  • implicitní obsazení: float fVal = iVal / 100,0;
  • explicitní casting: float fVal = (float) iVal / 100

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

Last Updated: