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:
- Zabírá 2X plovoucí typ.
- 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ř
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