Creación de variables flotantes y dobles en VEXcode Pro V5

Tipos que contienen números con posiciones decimales: flotante, doble

Estos tipos de datos a menudo se denominan tipos de datos de punto flotante. Los números se conocen como números de punto flotante .

flotar fvar = 50,15;
double dvar = 50.0;

Comparar el 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 lugares decimales.

Según VexOS - especificación ARM 7, el flotador puede manejar 6 o 7 lugares, y el doble puede manejar 15 o 16 .

float: en los V5os actuales, el controlador parece permitir hasta 8 lugares 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á igual que fvar2.

double: permite hasta 17 lugares decimales de precisión.

p.ej.

double dvar1 = 1,12345678912345678;
double dvar2 = 1.12345678912345670;

dval1 es diferente de dvar2,

vs.

doble dvar1 = 1,123456789123456789;
double 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 debería utilizar "doble" a menos que necesite una alta precisión:

  1. Ocupa el tipo de flotador 2X.
  2. Requiere una potencia de procesamiento mucho mayor.

Según VexOS - especificación ARM 7, un flotador puede ocupar 6 o 7 lugares y un doble puede ocupar 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 a almacenar 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 pierda 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 se encuentra 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

¿Puede intercambiar tipos de datos primitivos? - Casting

Es posible intercambiar tipos de datos. Esta técnica se llama "Casting". Si bien el casting es una práctica bastante común, hágalo 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; // casting implícito

o

int iVal = (char) aVal; // casting explícito.

Precaución para el truncamiento implícito:

p.ej.

codesnippet3.png

Otra práctica común es intercambiar int y float
flotador fVal = 5,486;
fracción flotante = fVal - (int) fVal; // lo hace: 5.486 - 5

Precaución para el 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 que estás usando esta técnica por diseño.

Si no desea que se produzca un truncamiento implícito, debe realizar una conversión explícita:

  • conversión implícita: float fVal = iVal / 100.0;
  • casting explícito: float fVal = (float) iVal / 100