Problema con float, no toman el valor que tienen que tomar

Iniciado por Naimaderis, 16 Diciembre 2016, 03:33 AM

0 Miembros y 1 Visitante están viendo este tema.

Naimaderis

Estoy teniendo un problema con el lenguaje, algo, que no entiendo bien, el siguiente código, no para nunca:


#include <stdio.h>

int main() {

   float y;

   for (y= 0.1; y != 1.0 ; y = y + 0.1){

       printf( "%f \n", y );

   }

   return 0;
}


Ademas, los float que muestra cuando compilo tienen demaciados decimales, los cuales no se limitan a 0.1 , 0.2 , 0.3 sino por ejemplo 273.708489.

Siento que hay algo detras de todo esto, que no estoy comprendiendo.

Para observar mejor donde estaba el problema, le coloque esta linea:

if (y > 1)
       {
           break;
       }


Me di cuenta, que "y" toma el valor 1, el cual se muestra como "1.0000000".

Probe con limitar los numeros que se muestran despues de la coma, pero aun asi, no funciono.

engel lex

puede que no sea una respuesta directa pero aquí todo lo que hay que saber sobre los float inicialmente
https://es.wikipedia.org/wiki/Coma_flotante


puede que no sea puntual pero: es un problema de precisión
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.