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.
Ондық таңбалары бар сандарды ұстайтын типтер – қалқымалы, қос
Бұл деректер түрлері жиі өзгермелі нүктелі деректер типтері деп аталады. Сандар өзгермелі нүктелі сандар деп аталады.
float fvar = 50,15;
қос dvar = 50,0;
Қалқымалы нүктелі деректер түрін салыстырыңыз – float және double
Қалқымалы және қос деректер түрі арасындағы айырмашылық ондық таңбалардың # дәлдігіне қатысты.
VexOS – ARM 7 сипаттамасынасүйене отырып, float 6 немесе 7 орынды, ал double 15 немесе 16 орынды өңдей алады.
float: ағымдағы V5os жүйесінде контроллер дәлдіктің 8 ондық таңбасына дейін рұқсат беретін сияқты.
мысалы
қалқымалы fvar1 = 1.12345670;
қалқымалы fvar2 = 1.12345678;
fval1 fvar2-ден ерекшеленеді,
қарсы
қалқымалы fvar1 = 1.123456780;
қалқымалы fvar2 = 1.123456781;
fval1 fvar2 сияқты бағаланады.
қос: дәлдіктің 17 ондық таңбасына дейін рұқсат береді.
мысалы
қос dvar1 = 1.12345678912345678;
қос dvar2 = 1.12345678912345670;
dval1 dvar2-ден ерекшеленеді,
қарсы
қос dvar1 = 1.123456789123456789;
қос dvar2 = 1.123456789123456780;
dval1 dvar2 сияқты бағаланады.
Жоғары дәлдік қажет болмаса, «қос» қолданбаңыз
Жоғары дәлдік қажет болмаса, «қос» қолданбаудың екі себебі бар:
- Ол 2X флоат түрін алады.
- Ол әлдеқайда жоғары өңдеу қуатын алады.
VexOS – ARM 7 сипаттамасынасүйене отырып, қалқымалы құрылғы 6 немесе 7 орынды, ал қос құрылғы 15 немесе 16 орынды өңдей алады. Кез келген жағдайда қос немесе қалқымадағы соңғы сандардың дәлдігіне сенбеу керек. Ол «float-нүкте есебі» деп аталатын нәрсеге байланысты «int» сақтаудан мүлде басқаша сақталады (бұл мақаланың аясынан тыс).
Осылайша, соңғы бірнеше ондық таңбалардағы дәлдікті жоғалтуыңыз мүмкін.
Double операциясы қалқымалымен салыстырғанда өте қымбат және өзгермелі нүктелік есептеулер деп аталатын нәрсеге байланысты «бүтін саннан» әлдеқайда жоғары.
IEEE стандартына сүйене отырып, төмендегілер сенімдірек ауқымда.
| Түрі | Ең кіші оң мән | Ең үлкен оң мән | # Дәлдік |
|---|---|---|---|
| қалқымалы | 10 -38 x 1.17549 | 10 38 x 3.40282 | 6 сан |
| қос | 10 -308 немесе 2.22507 | 10 308 x 1.79769 | 15 сан |
Қарапайым деректер түрлерін ауыстыра аласыз ба? - Кастинг
Деректер түрлерін алмастыруға болады. Бұл әдіс «Кастинг» деп аталады. Кастинг өте кең таралған тәжірибе болғанымен, мұны қажет болған жағдайда ғана жасаңыз.
Ең көп таралған тәжірибелердің бірі - char және int алмасу.
Себебі олардың екеуі де бір ерекшелікпен бүтін мәндерді білдіреді:
- «int» құрамында 4 байт (немесе кейбір компиляторда 8 байт)
- «char» тек 1 байтты қамтиды.
Мәселен, мысалы
char aVal = 100;
int iVal = aVal; // жасырын кастинг
немесе
int iVal = (char) aVal; // нақты кастинг.
Жасырын кесу туралы ескерту:
мысалы
#include "vex.h"
namespace функциясын пайдаланып, vex;
int main() {
// Робот конфигурациясын инициализациялау. АЛЫП ТАСТАМАҢЫЗ!
vexcodeInit();
int iVal = 128;
таңба aVal = (char) iVal; // ЖАМАН!!! aVal тек -128-ден 127-ге дейін ғана ұстай алады.
}Тағы бір кең тараған тәжірибе - in және float алмасу
float fVal = 5,486;
қалқымалы бөлшек = fVal - (int)fVal; //ол жасайды: 5.486 - 5
Жасырын кесу туралы ескерту:
мысалы
int iVal = 50;
қалқымалы мән fVal = iVal / 100;
енді fVal = 0,0, 0,5 ЕМЕС.
Кейбір сценарийлерде жиі операциялардың маңызды бөлігі болып табылатын жасырын кесу артықшылығын пайдалану өте жақсы. Дегенмен, бұл әдісті дизайн бойынша пайдаланып жатқаныңызға көз жеткізуіңіз керек.
Егер сіз жасырын кесудің орын алуын қаламасаңыз, нақты кастингті орындауыңыз керек:
- жасырын құю:
қалқымалы fVal = iVal / 100,0; - айқын құю:
қалқымалы fVal = (float) iVal / 100