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.
Tipos que contêm números com casas decimais – float, double
Esses tipos de dados são frequentemente chamados de tipos de dados de ponto flutuante. Os números são chamados de números de ponto flutuante.
float fvar = 50,15; dvar duplo = 50,0;
Compare o tipo de dados de ponto flutuante – float e double
A diferença entre um tipo de dados float e double está na precisão do número de casas decimais.
Com base na especificação VexOS – ARM 7, float pode lidar com 6 ou 7 lugares e double pode lidar com 15 ou 16.
float: no V5os atual, o controlador parece permitir até 8 casas decimais de precisão.
por exemplo
float fvar1 = 1,12345670; float fvar2 = 1,12345678;
fval1 é diferente de fvar2,
contra
float fvar1 = 1,123456780; float fvar2 = 1,123456781;
fval1 será avaliado da mesma forma que fvar2.
double: permite até 17 casas decimais de precisão.
por exemplo
duplo dvar1 = 1,12345678912345678; duplo dvar2 = 1,12345678912345670;
dval1 é diferente de dvar2,
contra
duplo dvar1 = 1,123456789123456789; duplo dvar2 = 1,123456789123456780;
dval1 será avaliado da mesma forma que dvar2.
Não use "double" a menos que precise de alta precisão
Há dois motivos pelos quais você não deve usar "double", a menos que precise de alta precisão:
- Ocupa o tipo float 2X.
- Ocupa um poder de processamento muito maior.
Com base na especificação VexOS – ARM 7, um float pode ocupar 6 ou 7 casas e um double pode lidar com 15 ou 16. Em ambos os casos, você não deve confiar na precisão dos últimos dígitos em double ou float. Ele é armazenado de forma muito diferente do armazenamento de um “int” devido a algo chamado “cálculo de ponto flutuante” (que está fora do escopo deste artigo).
Assim, você poderá perder a precisão nas últimas casas decimais.
A operação em double é bastante cara em comparação com float e muito mais alta que em “integer” devido a algo chamado cálculo de ponto flutuante.
Com base no padrão IEEE, o seguinte está dentro de uma faixa mais confiável.
Tipo | Menor valor positivo | Maior valor positivo | Nº de precisão |
flutuador | 10 -38 | 10 38 x 3,40282 | 6 dígitos |
dobro | 10 -308 ou 2,22507 | 10 308 x 1,79769 | 15 dígitos |
Você pode trocar tipos de dados primitivos? - Fundição
É possível trocar tipos de dados. Essa técnica é chamada de “Fundição”. Embora a transmissão seja uma prática bastante comum, faça isso apenas se for necessário.
Uma das práticas mais comuns é trocar char e int.
Isso ocorre porque ambos representam valores inteiros com uma exceção:
- “int” contém 4 bytes (ou 8 bytes em algum compilador)
- “char” contém apenas 1 byte.
Então, por exemplo
char aVal = 100; int iVal = aVal; //casting implícito
ou
int iVal = (char) aVal; // conversão explícita.
Cuidado com truncamento implícito:
por exemplo
Outra prática comum é trocar int e float
float fVal = 5,486; fração flutuante = fVal - (int)fVal; //faz: 5.486 - 5
Cuidado com truncamento implícito:
por exemplo
int iVal = 50; float fVal = iVal/100;
agora fVal = 0,0, NÃO 0,5.
Não há problema em aproveitar o truncamento implícito, que geralmente é uma parte importante das operações em alguns cenários. No entanto, você precisa ter certeza de que está usando essa técnica intencionalmente.
Se você não deseja que o truncamento implícito ocorra, você precisa fazer uma conversão explícita:
- conversão implícita:
float fVal = iVal / 100,0;
- conversão explícita:
float fVal = (float) iVal / 100