Dos errores comunes en la aritmética de punto flotante en C

Este tutorial demostrará dos reglas que deben respetarse al realizar una aritmética de punto flotante en C. Seguir estas reglas evitará la pérdida de información. Ejemplos con explicación explicada.

1ª Regla: Si un operador aritmético tiene operandos enteros, se realiza la operación de enteros.

Veamos un ejemplo.

#include "stdio.h"
principal()
{
flotar c;
c = 5/9;
printf ("c =% f", c);
getch ();
}

En el programa anterior, aunque la variable c parece tener un tipo de datos flotante, el programa imprime c = 0.000000. El programador probablemente esperaba que c = 0.555556.

Razón: en esta expresión c = 5/9, la / Es el operador aritmético. 5 y 9 son los operandos enteros. Según la 1ª Regla, se realiza la operación de enteros Por lo tanto, la división entera se trunca y cualquier parte fraccionaria se descarta. Así, la expresión se trunca a 0.

2ª Regla: Si un operador aritmético tiene un operando de punto flotante y un operando de entero, el entero se convertirá a punto flotante antes de que se realice la operación.

#include "stdio.h"
principal()
{
flotar c;
c = 5,0 / 9;
printf ("c =% f", c);
getch ();
}

En el programa anterior, la variable c tiene un tipo de datos flotante y el programa se imprime c = 0.555556, salida exceptuada.

Razón: en esta expresión c = 5.0 / 9, la / es el operador aritmético, 5.0 es operando de punto flotante y 9 es operando de enteros. Según la 2a Regla antes de que se realice la operación, el operando entero se convierte en operando de punto flotante. La expresión será c = 5.0 / 9.0. La expresión no se trunca porque es la relación de dos valores de punto flotante y, por lo tanto, el programa imprime c = 0.555556.