Creación de variables flotantes y dobles en 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.

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:

  1. Ocupa el doble del tipo de flotación.
  2. 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.

Diagrama que ilustra las características de programación del sistema de robótica V5, destacando los componentes y conexiones clave para una programación eficaz del robot.

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

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

Last Updated: