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 contienen números con decimales: flotante, doble
Estos tipos de datos a menudo se llaman tipos de datos de punto flotante. Los números se conocen como números de punto flotante.
float fvar = 50.15; doble dvar = 50.0;
Comparar tipo de datos de punto flotante: flotante y doble
La diferencia entre un tipo de datos flotante y doble tiene que ver con la precisión en el número de decimales.
Basado en la especificación VexOS – ARM 7, el flotador puede manejar 6 o 7 lugares, y el doble puede manejar 15 o 16.
float: en el V5os actual, el controlador parece permitir hasta 8 decimales de precisión.
p. ej.
float fvar1 = 1.12345670; float fvar2 = 1.12345678;
fval1 es diferente de fvar2,
vs
float fvar1 = 1.123456780; float fvar2 = 1.123456781;
fval1 se evaluará de la misma manera que fvar2.
doble: permite hasta 17 decimales de precisión.
p. ej.
doble dvar1 = 1.12345678912345678; doble dvar2 = 1.12345678912345670;
dval1 es diferente de dvar2,
vs
doble dvar1 = 1.123456789123456789; doble dvar2 = 1.123456789123456780;
dval1 se evaluará igual que dvar2.
No use "doble" a menos que necesite alta precisión
Hay dos razones por las que no debes usar "doble" a menos que necesites alta precisión:
- Ocupa el doble del tipo de flotación.
- Ocupa una potencia de procesamiento mucho mayor.
Basado en la especificación VexOS – ARM 7, un flotador puede hacer 6 o 7 lugares, y un doble puede manejar 15 o 16. En cualquier caso, no debe confiar en la precisión de los últimos dígitos en doble o flotante. Se almacena de manera muy diferente al almacenamiento de un "int" debido a algo llamado "cálculo de punto flotante" (que está fuera del alcance de este artículo).
Por lo tanto, es posible que pierdas la precisión en los últimos decimales.
La operación en doble es bastante costosa en comparación con la flotación, y mucho más alta que la de "entero" debido a algo llamado cálculos de punto flotante.
Según el estándar IEEE, lo siguiente está dentro de un rango más confiable.
| Tipo | Valor positivo más pequeño | Mayor valor positivo | # de precisión |
|---|---|---|---|
| flotador | 10 -38 x 1,17549 | 10 38 x 3.40282 | 6 dígitos |
| doble | 10 -308 o 2.22507 | 10 308 x 1,79769 | 15 dígitos |
¿Puedes intercambiar tipos de datos primitivos? - Fundición
Es posible intercambiar tipos de datos. Esta técnica se llama "Casting". Si bien el casting es una práctica bastante común, hazlo solo si es necesario.
Una de las prácticas más comunes es intercambiar char e int.
Esto se debe a que ambos representan valores enteros con una excepción:
- "int" contiene 4 bytes (u 8 bytes en algún compilador)
- "char" contiene solo 1 byte.
Entonces, por ejemplo,
char aVal = 100; int iVal = aVal; //fundición implícita
o bien
int iVal = (char) aVal; //casting explícito.
Precaución por truncamiento implícito:
p. ej.
Otra práctica común es intercambiar int y flotar
float fVal = 5.486; fracción de flotación = fVal - (int)fVal; //lo hace: 5.486 - 5
Precaución por truncamiento implícito:
p. ej.
int iVal = 50; float fVal = iVal / 100;
ahora fVal = 0.0, NO 0.5.
Está absolutamente bien aprovechar el truncamiento implícito, que a menudo es una parte importante de las operaciones en algunos escenarios. Sin embargo, debes asegurarte de usar esta técnica por diseño.
Si no desea que se produzca un truncamiento implícito, debe hacer un casting explícito:
- fundición implícita:
float fVal = iVal / 100.0; - fundición explícita:
float fVal = (float) iVal / 100